diff options
| author | Yong He <yonghe@outlook.com> | 2025-05-29 08:05:57 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-29 08:05:57 -0700 |
| commit | faf042ecc3e688a1a3ffbe1ac44d18dd7ddf441a (patch) | |
| tree | b54abb2e65b7791d74335ead396cf762f805ab5c /source/slang/slang.cpp | |
| parent | 45d794f57d453a5564a7360400c5bfc04bf12b31 (diff) | |
Language version + tuple syntax. (#7230)
* Language version + tuple syntax.
* Fix compile error.
* regenerate documentation Table of Contents
* Fix.
* regenerate command line reference
* Fix.
* Fix.
* Fix more test failures.
* revert empty line change,
* Retrigger CI
* #version->#lang
* Update source/core/slang-type-text-util.cpp
Co-authored-by: ArielG-NV <159081215+ArielG-NV@users.noreply.github.com>
* Remove comments.
* Fix parsing logic.
* Fix parser.
* Fix parser.
* update test comment
* Update options.
* regenerate documentation Table of Contents
* regenerate command line reference
---------
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
Co-authored-by: ArielG-NV <159081215+ArielG-NV@users.noreply.github.com>
Diffstat (limited to 'source/slang/slang.cpp')
| -rw-r--r-- | source/slang/slang.cpp | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp index 7fc519c03..bda847815 100644 --- a/source/slang/slang.cpp +++ b/source/slang/slang.cpp @@ -2730,7 +2730,8 @@ Expr* Linkage::parseTermString(String typeStr, Scope* scope) // We need to temporarily replace the SourceManager for this CompileRequest ScopeReplaceSourceManager scopeReplaceSourceManager(this, &localSourceManager); - SourceLanguage sourceLanguage; + SourceLanguage sourceLanguage = SourceLanguage::Slang; + SlangLanguageVersion languageVersion = m_optionSet.getLanguageVersion(); auto tokens = preprocessSource( srcFile, @@ -2738,7 +2739,8 @@ Expr* Linkage::parseTermString(String typeStr, Scope* scope) nullptr, Dictionary<String, String>(), this, - sourceLanguage); + sourceLanguage, + languageVersion); if (sourceLanguage == SourceLanguage::Unknown) sourceLanguage = SourceLanguage::Slang; @@ -3411,7 +3413,9 @@ void FrontEndCompileRequest::parseTranslationUnit(TranslationUnitRequest* transl for (auto sourceFile : translationUnit->getSourceFiles()) { - SourceLanguage sourceLanguage = SourceLanguage::Unknown; + SourceLanguage sourceLanguage = translationUnit->sourceLanguage; + SlangLanguageVersion languageVersion = + translationUnit->compileRequest->optionSet.getLanguageVersion(); auto tokens = preprocessSource( sourceFile, getSink(), @@ -3419,8 +3423,11 @@ void FrontEndCompileRequest::parseTranslationUnit(TranslationUnitRequest* transl combinedPreprocessorDefinitions, getLinkage(), sourceLanguage, + languageVersion, &preprocessorHandler); + translationUnitSyntax->languageVersion = languageVersion; + if (sourceLanguage == SourceLanguage::Unknown) sourceLanguage = translationUnit->sourceLanguage; @@ -4915,11 +4922,13 @@ Linkage::IncludeResult Linkage::findAndIncludeFile( // Create a transparent FileDecl to hold all children from the included file. auto fileDecl = module->getASTBuilder()->create<FileDecl>(); fileDecl->nameAndLoc.name = name; + fileDecl->parentDecl = module->getModuleDecl(); module->getIncludedSourceFileMap().add(sourceFile, fileDecl); FrontEndPreprocessorHandler preprocessorHandler(module, module->getASTBuilder(), sink); auto combinedPreprocessorDefinitions = translationUnit->getCombinedPreprocessorDefinitions(); - SourceLanguage sourceLanguage = SourceLanguage::Unknown; + SourceLanguage sourceLanguage = translationUnit->sourceLanguage; + SlangLanguageVersion slangLanguageVersion = module->getModuleDecl()->languageVersion; auto tokens = preprocessSource( sourceFile, sink, @@ -4927,11 +4936,19 @@ Linkage::IncludeResult Linkage::findAndIncludeFile( combinedPreprocessorDefinitions, this, sourceLanguage, + slangLanguageVersion, &preprocessorHandler); if (sourceLanguage == SourceLanguage::Unknown) sourceLanguage = translationUnit->sourceLanguage; + if (slangLanguageVersion != module->getModuleDecl()->languageVersion) + { + sink->diagnose( + tokens.begin()->getLoc(), + Diagnostics::languageVersionDiffersFromIncludingModule); + } + auto outerScope = module->getModuleDecl()->ownedScope; parseSourceFile( module->getASTBuilder(), |
