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