WIP: Get containers to return when you have no parent

parser.sync-conflict-20210405-185821-O3W7KWN
Tristan B. V. Kildaire 2021-04-01 15:39:06 +02:00
parent 6171d2d17e
commit a770f5f5c9
3 changed files with 16 additions and 6 deletions

View File

@ -51,6 +51,7 @@ void beginCompilation(string[] sourceFiles)
try try
{ {
TypeChecker typeChecker = new TypeChecker(modulle); TypeChecker typeChecker = new TypeChecker(modulle);
typeChecker.beginCheck();
} }
// catch(CollidingNameException e) // catch(CollidingNameException e)
// { // {

View File

@ -35,12 +35,12 @@ public final class TypeChecker
resolver = new Resolver(this); resolver = new Resolver(this);
beginCheck();
} }
private void beginCheck() public void beginCheck()
{ {
/** /**
* Make sure there are no name collisions anywhere * Make sure there are no name collisions anywhere
@ -491,14 +491,22 @@ unittest
Parser parser = new Parser(currentLexer.getTokens()); Parser parser = new Parser(currentLexer.getTokens());
Module modulle = parser.parse(); Module modulle = parser.parse();
gprintln("Type checking and symbol resolution..."); TypeChecker typeChecker = new TypeChecker(modulle);
Entity container = typeChecker.getResolver().resolveBest(typeChecker.getModule, "y");
gprintln(container); /* TODO: fix this, resolve container at top */
Entity colliderMember = typeChecker.getResolver().resolveBest(typeChecker.getModule, "y.p");
gprintln(colliderMember); /* TODO: fix this, resolve container at top */
parser.expect("d");
try try
{ {
TypeChecker typeChecker = new TypeChecker(modulle); typeChecker.beginCheck();
assert(false); assert(false);
} }
catch(CollidingNameException e) catch(CollidingNameException e)
{ {
/* TODO: Check */
assert(true); assert(true);
//gprintln("Stack trace:\n"~to!(string)(e.info)); //gprintln("Stack trace:\n"~to!(string)(e.info));
} }
@ -557,6 +565,7 @@ unittest
try try
{ {
TypeChecker typeChecker = new TypeChecker(modulle); TypeChecker typeChecker = new TypeChecker(modulle);
} }
// catch(CollidingNameException e) // catch(CollidingNameException e)
// { // {

View File

@ -1,3 +1,3 @@
module x; module y;
int x; int p;