plugin fixes: incorrect reformatting on }, incorrect parsing of class minidocs
This commit is contained in:
1 parent
1d9befe101
commit
9e138367ef
4 files changed
+73
-6
No files matched your search
@@ -1773,10 +1773,11 @@ class Compiler(
|
||||
}
|
||||
|
||||
private fun parseEnumDeclaration(): Statement {
|
||||
val startPos = pendingDeclStart ?: cc.currentPos()
|
||||
val nameToken = cc.requireToken(Token.Type.ID)
|
||||
val startPos = pendingDeclStart ?: nameToken.pos
|
||||
val doc = pendingDeclDoc ?: consumePendingDoc()
|
||||
pendingDeclDoc = null
|
||||
val nameToken = cc.requireToken(Token.Type.ID)
|
||||
pendingDeclStart = null
|
||||
// so far only simplest enums:
|
||||
val names = mutableListOf<String>()
|
||||
// skip '{'
|
||||
@@ -1822,6 +1823,10 @@ class Compiler(
|
||||
|
||||
private suspend fun parseClassDeclaration(): Statement {
|
||||
val nameToken = cc.requireToken(Token.Type.ID)
|
||||
val startPos = pendingDeclStart ?: nameToken.pos
|
||||
val doc = pendingDeclDoc ?: consumePendingDoc()
|
||||
pendingDeclDoc = null
|
||||
pendingDeclStart = null
|
||||
return inCodeContext(CodeContext.ClassBody(nameToken.value)) {
|
||||
val constructorArgsDeclaration =
|
||||
if (cc.skipTokenOfType(Token.Type.LPAREN, isOptional = true))
|
||||
@@ -1879,7 +1884,7 @@ class Compiler(
|
||||
|
||||
// Emit MiniClassDecl with collected base names; bodyRange is omitted for now
|
||||
run {
|
||||
val declRange = MiniRange(pendingDeclStart ?: nameToken.pos, cc.currentPos())
|
||||
val declRange = MiniRange(startPos, cc.currentPos())
|
||||
val bases = baseSpecs.map { it.name }
|
||||
// Collect constructor fields declared as val/var in primary constructor
|
||||
val ctorFields = mutableListOf<MiniCtorField>()
|
||||
@@ -1903,11 +1908,10 @@ class Compiler(
|
||||
bases = bases,
|
||||
bodyRange = classBodyRange,
|
||||
ctorFields = ctorFields,
|
||||
doc = pendingDeclDoc,
|
||||
doc = doc,
|
||||
nameStart = nameToken.pos
|
||||
)
|
||||
miniSink?.onClassDecl(node)
|
||||
pendingDeclDoc = null
|
||||
}
|
||||
|
||||
val initScope = popInitScope()
|
||||
|
||||
@@ -288,7 +288,20 @@ object LyngFormatter {
|
||||
i++
|
||||
}
|
||||
// Normalize collected base indent: replace tabs with spaces
|
||||
var baseIndent = if (onlyWs) base.toString().replace("\t", " ".repeat(config.indentSize)) else ""
|
||||
var baseIndent = if (onlyWs) {
|
||||
if (start == lineStart) {
|
||||
// Range starts at line start, pick up this line's indentation as base
|
||||
var k = start
|
||||
val lineIndent = StringBuilder()
|
||||
while (k < text.length && text[k] != '\n' && (text[k] == ' ' || text[k] == '\t')) {
|
||||
lineIndent.append(text[k])
|
||||
k++
|
||||
}
|
||||
lineIndent.toString().replace("\t", " ".repeat(config.indentSize))
|
||||
} else {
|
||||
base.toString().replace("\t", " ".repeat(config.indentSize))
|
||||
}
|
||||
} else ""
|
||||
var parentBaseIndent: String? = baseIndent
|
||||
if (baseIndent.isEmpty()) {
|
||||
// Fallback: use the indent of the nearest previous non-empty line as base.
|
||||
|
||||
Reference in new issue
Block a user