Rework visitContructor to match how it is doen for func declarator

This commit is contained in:
ryuukk 2024-08-27 07:44:17 +02:00 committed by GitHub
parent 27b1042959
commit b9401fb5d4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 15 additions and 14 deletions

View File

@ -905,12 +905,12 @@ private:
const TemplateParameters templateParameters, const TemplateParameters templateParameters,
const FunctionBody functionBody, string doc) const FunctionBody functionBody, string doc)
{ {
SemanticSymbol* symbol = allocateSemanticSymbol(CONSTRUCTOR_SYMBOL_NAME, pushSymbol(CONSTRUCTOR_SYMBOL_NAME, CompletionKind.functionName, symbolFile, location, null);
CompletionKind.functionName, symbolFile, location); scope (exit) popSymbol();
symbol.parent = currentSymbol;
currentSymbol.addChild(symbol, true); currentSymbol.acSymbol.protection = protection.current;
symbol.acSymbol.protection = protection.current; currentSymbol.acSymbol.doc = makeDocumentation(doc);
symbol.acSymbol.doc = makeDocumentation(doc); currentSymbol.acSymbol.qualifier = SymbolQualifier.func;
istring lastComment = this.lastComment; istring lastComment = this.lastComment;
this.lastComment = istring.init; this.lastComment = istring.init;
@ -918,18 +918,19 @@ private:
if (functionBody !is null) if (functionBody !is null)
{ {
pushFunctionScope(functionBody, location + 4); // 4 == "this".length size_t start = location + 4; // 4 = ctor name length
scope(exit) popScope(); currentSymbol.acSymbol.location = start;
currentSymbol = symbol;
processParameters(symbol, null, THIS_SYMBOL_NAME, parameters, templateParameters); pushFunctionScope(functionBody, start);
scope (exit) popScope();
processParameters(currentSymbol, null,
currentSymbol.acSymbol.name, parameters, templateParameters);
functionBody.accept(this); functionBody.accept(this);
currentSymbol = currentSymbol.parent;
} }
else else
{ {
currentSymbol = symbol; processParameters(currentSymbol, null,
processParameters(symbol, null, THIS_SYMBOL_NAME, parameters, templateParameters); currentSymbol.acSymbol.name, parameters, templateParameters);
currentSymbol = currentSymbol.parent;
} }
} }