save progress

This commit is contained in:
ryuukk 2023-02-13 22:38:48 +01:00
parent fc286977f7
commit eac9c54ddb
1 changed files with 33 additions and 27 deletions

View File

@ -56,13 +56,15 @@ void secondPass(SemanticSymbol* currentSymbol, Scope* moduleScope, ref ModuleCac
resolveType(currentSymbol.acSymbol, currentSymbol.typeLookups, resolveType(currentSymbol.acSymbol, currentSymbol.typeLookups,
moduleScope, cache); moduleScope, cache);
} }
if (currentSymbol.acSymbol.type && currentSymbol.typeLookups.length > 0) if (currentSymbol.acSymbol.type && currentSymbol.typeLookups.length > 0)
{ {
TypeLookup* lookup = currentSymbol.typeLookups.front; TypeLookup* lookup = currentSymbol.typeLookups.front;
if (lookup.ctx.root) if (lookup.ctx.root)
{ {
auto type = currentSymbol.acSymbol.type; auto type = currentSymbol.acSymbol.type;
if (type.kind == structName || type.kind == className && lookup.ctx.root.args.length > 0) if (type.kind == structName || type.kind == className)
if (lookup.ctx.root.args.length > 0)
{ {
DSymbol*[string] mapping; DSymbol*[string] mapping;
int depth; int depth;
@ -226,50 +228,54 @@ DSymbol* createTypeWithTemplateArgs(DSymbol* type, TypeLookup* lookup, VariableC
newPart.symbolFile = part.symbolFile; newPart.symbolFile = part.symbolFile;
newPart.doc = part.doc; newPart.doc = part.doc;
newPart.callTip = part.callTip; newPart.callTip = part.callTip;
newPart.ownType = false;
if (part.type.name in mapping) if (part.type.name in mapping)
{ {
newPart.ownType = true;
newPart.type = mapping[part.type.name]; newPart.type = mapping[part.type.name];
warning(" mapping found: ", part.type.name," -> ", newPart.type.name); warning(" mapping found: ", part.type.name," -> ", newPart.type.name);
} }
else else
if (m && part.type.name in m) if (m && part.type.name in m)
{ {
newPart.ownType = true;
newPart.type = m[part.type.name]; newPart.type = m[part.type.name];
warning(" mapping in m found: ", part.type.name," -> ", newPart.type.name); warning(" mapping in m found: ", part.type.name," -> ", newPart.type.name);
} }
else else
error(" mapping not found: ".red, part.type.name," type: ", type.name, " cur: ", ti.chain, "args: ", ti.args); error(" mapping not found: ".red, part.type.name," type: ", type.name, " cur: ", ti.chain, "args: ", ti.args);
newType.addChild(newPart, true); newType.addChild(newPart, true);
} }
else else
{ {
DSymbol* part_T; // BUG: doing it recursively messes with the mapping
// i need to debug this and figure out perhaps a better way to do this stuff
// maybe move the VariableContext to the symbol directly
// i'll need to experiemnt with it
if (depth < 50) //DSymbol* part_T;
if (part.type && part.kind == CompletionKind.variableName) //if (depth < 50)
foreach(partPart; part.type.opSlice()) //if (part.type && part.kind == CompletionKind.variableName)
{ //foreach(partPart; part.type.opSlice())
if (partPart.kind == CompletionKind.typeTmpParam) //{
{ // if (partPart.kind == CompletionKind.typeTmpParam)
part_T = part; // {
foreach(arg; ti.args) // part_T = part;
{ // foreach(arg; ti.args)
warning(" > ", arg.chain); // {
foreach(aa; arg.args) // warning(" > ", arg.chain);
warning(" > ", aa.chain); // foreach(aa; arg.args)
} // warning(" > ", aa.chain);
warning("go agane ".blue, part.name, " ", part.type.name, " with arg: ", ti.chain," Ts: ", T_names); // }
resolveTemplate(part, part.type, lookup, ti, moduleScope, cache, depth, mapping); // warning("go agane ".blue, part.name, " ", part.type.name, " with arg: ", ti.chain," Ts: ", T_names);
break; // resolveTemplate(part, part.type, lookup, ti, moduleScope, cache, depth, mapping);
} // break;
else if (partPart.type && partPart.type.kind == CompletionKind.typeTmpParam) // }
{ // //else if (partPart.type && partPart.type.kind == CompletionKind.typeTmpParam)
warning("here!".red," ", partPart.name," ", partPart.type.name); // //{
} // // warning("here!".red," ", partPart.name," ", partPart.type.name);
} // //}
//}
warning("adding untouched: ", part.name, "into: ", newType); warning("adding untouched: ", part.name, "into: ", newType);
newType.addChild(part, false); newType.addChild(part, false);
} }