From 91d796da81aade1669abb90b72d4013e5480fb2d Mon Sep 17 00:00:00 2001 From: Tim Foley Date: Mon, 19 Jun 2017 10:37:09 -0700 Subject: Make sure that semantic checks always apply to Slang files That is, even if hte user specified the `-no-checking` option (or the equivalent via API), we still want/need to apply full semantic checks to Slang code, so that cross-compilation will be possible. --- source/slang/parser.cpp | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'source/slang/parser.cpp') diff --git a/source/slang/parser.cpp b/source/slang/parser.cpp index fb66fbbcf..75398a40d 100644 --- a/source/slang/parser.cpp +++ b/source/slang/parser.cpp @@ -2,6 +2,7 @@ #include +#include "compiler.h" #include "lookup.h" namespace Slang @@ -31,7 +32,9 @@ namespace Slang class Parser { public: - CompileOptions& options; + CompileOptions const& options; + TranslationUnitOptions const& translationUnitOptions; + int anonymousCounter = 0; RefPtr outerScope; @@ -64,12 +67,14 @@ namespace Slang currentScope = currentScope->parent; } Parser( - CompileOptions& options, + CompileOptions const& options, + TranslationUnitOptions const& translationUnitOptions, TokenSpan const& _tokens, DiagnosticSink * sink, String _fileName, RefPtr const& outerScope) : options(options) + , translationUnitOptions(translationUnitOptions) , tokenReader(_tokens) , sink(sink) , fileName(_fileName) @@ -2495,7 +2500,7 @@ parser->ReadToken(TokenType::Comma); RefPtr Parser::ParseBlockStatement() { - if( options.flags & SLANG_COMPILE_FLAG_NO_CHECKING ) + if( translationUnitOptions.compileFlags & SLANG_COMPILE_FLAG_NO_CHECKING ) { // We have been asked to parse the input, but not attempt to understand it. @@ -3150,16 +3155,17 @@ parser->ReadToken(TokenType::Comma); return rs; } - // Parse a source file into an existing translation unit + // Parse a source file into an existing translation unit void parseSourceFile( - ProgramSyntaxNode* translationUnitSyntax, - CompileOptions& options, - TokenSpan const& tokens, - DiagnosticSink* sink, - String const& fileName, - RefPtr const&outerScope) - { - Parser parser(options, tokens, sink, fileName, outerScope); + ProgramSyntaxNode* translationUnitSyntax, + CompileOptions const& options, + TranslationUnitOptions const& translationUnitOptions, + TokenSpan const& tokens, + DiagnosticSink* sink, + String const& fileName, + RefPtr const& outerScope) + { + Parser parser(options, translationUnitOptions, tokens, sink, fileName, outerScope); return parser.parseSourceFile(translationUnitSyntax); } } -- cgit v1.2.3