From faf042ecc3e688a1a3ffbe1ac44d18dd7ddf441a Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 29 May 2025 08:05:57 -0700 Subject: 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> --- source/slang/slang.cpp | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'source/slang/slang.cpp') 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(), 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->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(), -- cgit v1.2.3