From a770f5f5c9ee90499dab32d48098086baaac329c Mon Sep 17 00:00:00 2001 From: "Tristan B. Kildaire" Date: Thu, 1 Apr 2021 15:39:06 +0200 Subject: [PATCH] WIP: Get containers to return when you have no parent --- source/tlang/compiler/compiler.d | 1 + source/tlang/compiler/typecheck/core.d | 17 +++++++++++++---- source/tlang/testing/collide_container.t | 4 ++-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/source/tlang/compiler/compiler.d b/source/tlang/compiler/compiler.d index 55f8ab6..4c20e97 100644 --- a/source/tlang/compiler/compiler.d +++ b/source/tlang/compiler/compiler.d @@ -51,6 +51,7 @@ void beginCompilation(string[] sourceFiles) try { TypeChecker typeChecker = new TypeChecker(modulle); + typeChecker.beginCheck(); } // catch(CollidingNameException e) // { diff --git a/source/tlang/compiler/typecheck/core.d b/source/tlang/compiler/typecheck/core.d index 06c0109..f37acb8 100644 --- a/source/tlang/compiler/typecheck/core.d +++ b/source/tlang/compiler/typecheck/core.d @@ -35,12 +35,12 @@ public final class TypeChecker resolver = new Resolver(this); - beginCheck(); + } - private void beginCheck() + public void beginCheck() { /** * Make sure there are no name collisions anywhere @@ -491,14 +491,22 @@ unittest Parser parser = new Parser(currentLexer.getTokens()); 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 { - TypeChecker typeChecker = new TypeChecker(modulle); + typeChecker.beginCheck(); assert(false); } catch(CollidingNameException e) { + /* TODO: Check */ assert(true); //gprintln("Stack trace:\n"~to!(string)(e.info)); } @@ -557,6 +565,7 @@ unittest try { TypeChecker typeChecker = new TypeChecker(modulle); + } // catch(CollidingNameException e) // { diff --git a/source/tlang/testing/collide_container.t b/source/tlang/testing/collide_container.t index d286e88..b75d7f0 100644 --- a/source/tlang/testing/collide_container.t +++ b/source/tlang/testing/collide_container.t @@ -1,3 +1,3 @@ -module x; +module y; -int x; \ No newline at end of file +int p; \ No newline at end of file