Merge pull request #12966 from a3d4/fix-ice-structtype-nativemembers

Fix ICE caused by an immutable struct with mapping
This commit is contained in:
Mathias L. Baumann
2022-06-23 16:11:28 +02:00
committed by GitHub
4 changed files with 28 additions and 6 deletions
+9 -6
View File
@@ -479,12 +479,6 @@ bool CompilerStack::analyze()
if (auto sourceAst = source->ast)
noErrors = contractLevelChecker.check(*sourceAst);
// Requires ContractLevelChecker
DocStringAnalyser docStringAnalyser(m_errorReporter);
for (Source const* source: m_sourceOrder)
if (source->ast && !docStringAnalyser.analyseDocStrings(*source->ast))
noErrors = false;
// Now we run full type checks that go down to the expression level. This
// cannot be done earlier, because we need cross-contract types and information
// about whether a contract is abstract for the `new` expression.
@@ -497,6 +491,15 @@ bool CompilerStack::analyze()
if (source->ast && !typeChecker.checkTypeRequirements(*source->ast))
noErrors = false;
if (noErrors)
{
// Requires ContractLevelChecker and TypeChecker
DocStringAnalyser docStringAnalyser(m_errorReporter);
for (Source const* source: m_sourceOrder)
if (source->ast && !docStringAnalyser.analyseDocStrings(*source->ast))
noErrors = false;
}
if (noErrors)
{
// Checks that can only be done when all types of all AST nodes are known.