summaryrefslogtreecommitdiff
path: root/source/slang/slang.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang.cpp')
-rw-r--r--source/slang/slang.cpp47
1 files changed, 28 insertions, 19 deletions
diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp
index 76cb502c0..5e80dabf5 100644
--- a/source/slang/slang.cpp
+++ b/source/slang/slang.cpp
@@ -405,21 +405,39 @@ RefPtr<ProgramSyntaxNode> CompileRequest::loadModule(
}
-String CompileRequest::autoImportModule(
+void CompileRequest::handlePoundImport(
+ String const& name,
String const& path,
- String const& source,
- CodePosition const& loc)
+ TokenList const& tokens)
{
- // TODO: may want to have some kind of canonicalization step here
- String name = path;
+ RefPtr<TranslationUnitRequest> translationUnit = new TranslationUnitRequest();
+ translationUnit->compileRequest = this;
- // Have we already loaded a module matching this name?
- if (loadedModulesMap.TryGetValue(name))
- return name;
+ // Imported code is always native Slang code
+ RefPtr<Scope> languageScope = mSession->slangLanguageScope;
+
+ RefPtr<ProgramSyntaxNode> translationUnitSyntax = new ProgramSyntaxNode();
+ translationUnit->SyntaxNode = translationUnitSyntax;
+
+ parseSourceFile(
+ translationUnit.Ptr(),
+ tokens,
+ &mSink,
+ path,
+ languageScope);
+
+ // TODO: handle errors
+
+ checkTranslationUnit(translationUnit.Ptr());
+
+ // Skip code generation
+
+ //
- loadModule(name, path, source, loc);
+ RefPtr<ProgramSyntaxNode> moduleDecl = translationUnit->SyntaxNode;
- return name;
+ loadedModulesMap.Add(name, moduleDecl);
+ loadedModulesList.Add(moduleDecl);
}
RefPtr<ProgramSyntaxNode> CompileRequest::findOrImportModule(
@@ -494,15 +512,6 @@ RefPtr<ProgramSyntaxNode> findOrImportModule(
return request->findOrImportModule(name, loc);
}
-String autoImportModule(
- CompileRequest* request,
- String const& path,
- String const& source,
- CodePosition const& loc)
-{
- return request->autoImportModule(path, source, loc);
-}
-
void Session::addBuiltinSource(
RefPtr<Scope> const& scope,
String const& path,