diff --git a/Import/GacUI.cpp b/Import/GacUI.cpp index d8bf4e54..233cbf34 100644 --- a/Import/GacUI.cpp +++ b/Import/GacUI.cpp @@ -23609,8 +23609,10 @@ GuiToolstripCommand::ShortcutBuilder Parser Ptr match=regexShortcut.MatchHead(text); if (match && match->Result().Length() != text.Length()) { - errors.Add(glr::ParsingError(nullptr, {}, L"Failed to parse a shortcut \"" + text + L"\".")); - return 0; + glr::ParsingError error; + error.message = L"Failed to parse a shortcut \"" + text + L"\"."; + errors.Add(error); + return nullptr; } Ptr builder = new ShortcutBuilder; diff --git a/Import/GacUICompiler.cpp b/Import/GacUICompiler.cpp index c8cb9e1d..577e6868 100644 --- a/Import/GacUICompiler.cpp +++ b/Import/GacUICompiler.cpp @@ -1705,7 +1705,9 @@ GuiInstanceContext::ElementName Parser Ptr match = regexElementName.MatchHead(text); if (!match || match->Result().Length() != text.Length()) { - errors.Add(glr::ParsingError(nullptr, {}, L"Failed to parse an element name \"" + text + L"\".")); + glr::ParsingError error; + error.message = L"Failed to parse an element name \"" + text + L"\"."; + errors.Add(error); return nullptr; } @@ -4183,7 +4185,9 @@ namespace vl WfAssemblyLoadErrors loadErrors; if (!compiled->Initialize(true, loadErrors)) { - manager->errors.Add(glr::ParsingError(nullptr, {}, L"Internal error happened during loading an assembly that just passed type verification.")); + glr::ParsingError error; + error.message = L"Internal error happened during loading an assembly that just passed type verification."; + manager->errors.Add(error); } } else @@ -9105,6 +9109,7 @@ ExecuteQueryVisitor case GuiIqBinaryOperator::Substract: CopyFrom(output, From(first).Except(second)); break; + default:; } } }; @@ -9210,6 +9215,7 @@ GuiIqPrint case GuiIqChildOption::Indirect: writer.WriteString(L"//"); break; + default:; } if (node->attributeNameOption == GuiIqNameOption::Specified) @@ -9259,6 +9265,7 @@ GuiIqPrint case GuiIqBinaryOperator::Substract: writer.WriteString(L" - "); break; + default:; } node->second->Accept(this); writer.WriteChar(L')'); diff --git a/Import/Vlpp.h b/Import/Vlpp.h index 83421d2e..cf59b805 100644 --- a/Import/Vlpp.h +++ b/Import/Vlpp.h @@ -602,11 +602,23 @@ namespace vl const K& key; const V& value; +#if defined(__clang__) +#pragma clang dignostic push +#pragma clang diagnostic ignored "-Wnull-dereference" +#elif defined(__GNUC__) +#pragma GCC dignostic push +#pragma GCC diagnostic ignored "-Wnull-dereference" +#endif Pair() : key(*(const K*)nullptr) , value(*(const V*)nullptr) { } +#if defined(__clang__) +#pragma clang dignostic pop +#elif defined(__GNUC__) +#pragma GCC dignostic popd +#endif Pair(const K& _key, const V& _value) : key(_key) diff --git a/Import/VlppGlrParser.cpp b/Import/VlppGlrParser.cpp index 5762be7f..4f8fcbc9 100644 --- a/Import/VlppGlrParser.cpp +++ b/Import/VlppGlrParser.cpp @@ -1284,6 +1284,7 @@ JsonPrintVisitor case JsonLiteralValue::Null: writer.WriteString(L"null"); break; + default:; } } @@ -4135,6 +4136,7 @@ RunInstruction CHECK_ERROR(objectCount > 0, ERROR_MESSAGE_PREFIX L"Encountered unbalanced instructions."); objectCount--; break; + default:; } switch (ins.type) @@ -4145,6 +4147,7 @@ RunInstruction case AstInsType::DelayFieldAssignment: reopenCount--; break; + default:; } // if we found a ReopenObject @@ -4339,6 +4342,7 @@ FindBalancedBoOrDfa return; } break; + default:; } } } diff --git a/Import/VlppGlrParser.h b/Import/VlppGlrParser.h index 95ef194b..7c145ce2 100644 --- a/Import/VlppGlrParser.h +++ b/Import/VlppGlrParser.h @@ -1403,9 +1403,9 @@ ParserBase #define ERROR_MESSAGE_PREFIX L"vl::glr::ParserBase<...>::Parse(List& TraceManager::ITypeCallback*)#" automaton::TraceManager tm(*executable.Obj(), typeCallback); auto ast = ParseInternal(tokens, (vint32_t)State, tm, typeCallback, codeIndex); - auto typedAst = ast.Cast(); + auto typedAst = ast.template Cast(); - if (!typedAst) + if (ast && !typedAst) { auto args = ErrorArgs::UnexpectedAstType(tokens, *executable.Obj(), tm, ast); OnError(args); diff --git a/Import/VlppGlrParserCompiler.cpp b/Import/VlppGlrParserCompiler.cpp index 186f0723..8453fcf5 100644 --- a/Import/VlppGlrParserCompiler.cpp +++ b/Import/VlppGlrParserCompiler.cpp @@ -3336,7 +3336,7 @@ LexerSymbolManager FINISHED_CALCULATING_DISPLAY_TEXT: if (expanding.Count() == 0) { - token->displayText = u32tow(U32String::Unmanaged(&buffer[0])); + token->displayText = u32tow(&buffer[0]); if (tokensByDisplayText.Keys().Contains(token->displayText)) { AddError( @@ -3507,6 +3507,7 @@ CompileAst case GlrPropType::Array: propSymbol->SetPropType(AstPropType::Array, prop->propTypeName.value, prop->propTypeName.codeRange); break; + default:; } } } @@ -4167,6 +4168,7 @@ CompileSyntaxVisitor case GlrOptionalPriority::PreferSkip: clauseDisplayText += L"-[ "; break; + default:; } auto bodyPair = Build(node->syntax); clauseDisplayText += L" ]"; @@ -9291,6 +9293,7 @@ SyntaxSymbolManager::BuildAutomaton case EdgeImportancy::LowPriority: edgeDesc.priority = automaton::EdgePriority::LowPriority; break; + default:; } edgeDesc.insBeforeInput.start = (vint32_t)instructionsInOrder.Count(); @@ -9333,6 +9336,7 @@ SyntaxSymbolManager::BuildAutomaton case EdgeImportancy::LowPriority: returnDesc.priority = automaton::EdgePriority::LowPriority; break; + default:; } returnDesc.insAfterInput.start = (vint32_t)instructionsInOrder.Count(); @@ -9714,6 +9718,7 @@ CompactSyntaxBuilder case EdgeInputType::Epsilon: BuildEpsilonEliminatedEdgesInternal(edge->To(), newState, endState, visited, accumulatedEdges); break; + default:; } accumulatedEdges.RemoveAt(accumulatedEdges.Count() - 1); } @@ -10111,6 +10116,7 @@ SyntaxSymbolManager::FixCrossReferencedRuleEdge accumulatedEdges.RemoveAt(accumulatedEdges.Count() - 1); } break; + default:; } } } diff --git a/Import/VlppWorkflowCompiler.cpp b/Import/VlppWorkflowCompiler.cpp index 9d1c978a..b58bcd64 100644 --- a/Import/VlppWorkflowCompiler.cpp +++ b/Import/VlppWorkflowCompiler.cpp @@ -139,6 +139,7 @@ CheckBaseClass } } break; + default:; } if (!depItems.Keys().Contains(baseTd)) continue; @@ -1175,6 +1176,7 @@ BuildGlobalNameFromModules case WfClassKind::Interface: td = MakePtr(typeName); break; + default:; } AddCustomType(manager, scopeName, declaration, td); @@ -1215,6 +1217,7 @@ BuildGlobalNameFromModules manager->declarationMemberInfos.Add(node, info); } break; + default:; } } } @@ -2905,6 +2908,7 @@ CompleteScopeForDeclaration value |= items[itemInt->name.value]; } break; + default:; } td->AddEnumItem(item->name.value, value); items.Add(item->name.value, value); @@ -3249,6 +3253,7 @@ ContextFreeModuleDesugar needProperty = true; } break; + default:; } } else if (surroundingLambda) @@ -8201,6 +8206,7 @@ ExpandStateMachineStatementVisitor defaultBlock->statements.Add(gotoStat); } break; + default:; } if (defaultBlock->statements.Count() > 0) @@ -8299,6 +8305,7 @@ ExpandStateMachineStatementVisitor } } break; + default:; } SetCodeRange(Ptr(block), node->codeRange); result = block; @@ -12532,6 +12539,7 @@ ValidateSemantic(Expression) default:; } break; + default:; } results.Add(ResolveExpressionResult::ReadonlyType(typeInfo)); @@ -15037,6 +15045,7 @@ ValidateStructure(Declaration) case WfFunctionKind::Override: manager->errors.Add(WfErrors::OverrideShouldImplementInterfaceMethod(node)); break; + default:; } } break; @@ -15059,9 +15068,11 @@ ValidateStructure(Declaration) case WfFunctionKind::Override: manager->errors.Add(WfErrors::OverrideShouldImplementInterfaceMethod(node)); break; + default:; } } break; + default:; } } else @@ -15077,6 +15088,7 @@ ValidateStructure(Declaration) break; case WfFunctionKind::Override: break; + default:; } } if (!node->statement) @@ -15423,8 +15435,7 @@ ValidateStructure(Declaration) } } break; - case WfClassKind::Interface: - break; + default:; } for (auto type : node->baseTypes) @@ -15483,6 +15494,7 @@ ValidateStructure(Declaration) case WfEnumKind::Flag: manager->errors.Add(WfErrors::FlagValuesNotConsecutiveFromZero(node)); break; + default:; } } switch (node->kind) @@ -15493,6 +15505,7 @@ ValidateStructure(Declaration) case WfEnumKind::Flag: current = current == 0 ? 1 : current * 2; break; + default:; } } break; @@ -15505,6 +15518,7 @@ ValidateStructure(Declaration) } } break; + default:; } if (discoveredItems.Contains(item->name.value)) @@ -15567,6 +15581,7 @@ ValidateStructure(Declaration) manager->errors.Add(WfErrors::OverrideShouldImplementInterfaceMethod(node)); } break; + default:; } if (classDecl) @@ -15585,6 +15600,7 @@ ValidateStructure(Declaration) manager->errors.Add(WfErrors::AutoPropertyCannotBeInitializedInInterface(node, classDecl)); } break; + default:; } } else if (dynamic_cast(surroundingLambda)) @@ -19418,6 +19434,7 @@ WfGenerateExpressionVisitor case WfLiteralValue::False: writer.WriteString(L"false"); break; + default:; } } @@ -19521,6 +19538,7 @@ WfGenerateExpressionVisitor writer.WriteString(L")"); } break; + default:; } } @@ -20146,6 +20164,7 @@ WfGenerateExpressionVisitor writer.WriteString(L" nullptr)"); } break; + default:; } } break; @@ -20198,6 +20217,7 @@ WfGenerateExpressionVisitor writer.WriteString(L" nullptr)"); } break; + default:; } } break; @@ -20237,6 +20257,7 @@ WfGenerateExpressionVisitor writer.WriteString(L"true"); } break; + default:; } } break; @@ -20285,6 +20306,7 @@ WfGenerateExpressionVisitor writer.WriteString(L" nullptr)"); } break; + default:; } } else if ((type->GetTypeDescriptor() == result.type->GetTypeDescriptor()) == (node->test == WfTypeTesting::IsType)) @@ -21657,6 +21679,7 @@ namespace vl } } break; + default:; } writer.WriteLine(L"public ::vl::reflection::Description<" + name + L">"); writer.WriteLine(prefix + L"{"); @@ -21931,6 +21954,7 @@ namespace vl } writer.WriteLine(L","); break; + default:; } } writer.WriteLine(prefix + L"};"); @@ -25207,6 +25231,7 @@ GenerateInstructions(Expression) case WfLiteralValue::False: INSTRUCTION(Ins::LoadValue({ false })); break; + default:; } } @@ -25263,6 +25288,7 @@ GenerateInstructions(Expression) case WfUnaryOperator::Negative: INSTRUCTION(Ins::OpNegative(GetInstructionTypeArgument(type))); break; + default:; } } @@ -25767,6 +25793,7 @@ GenerateInstructions(Expression) INSTRUCTION(Ins::OpNot(WfInsType::Bool)); } break; + default:; } } @@ -28398,6 +28425,7 @@ Print (Declaration) CHECK_FAIL(L"Internal error: Unknown value."); } break; + default:; } for (auto [type, index] : indexed(node->baseTypes)) diff --git a/Tools/CppMerge.exe b/Tools/CppMerge.exe index 7eb97637..cb07b1e3 100644 Binary files a/Tools/CppMerge.exe and b/Tools/CppMerge.exe differ diff --git a/Tools/GacGen32.exe b/Tools/GacGen32.exe index 9495f5f7..51858c29 100644 Binary files a/Tools/GacGen32.exe and b/Tools/GacGen32.exe differ diff --git a/Tools/GacGen64.exe b/Tools/GacGen64.exe index 298e3afe..68e83277 100644 Binary files a/Tools/GacGen64.exe and b/Tools/GacGen64.exe differ diff --git a/Tools/GlrParserGen.exe b/Tools/GlrParserGen.exe index cd41d189..abb6a824 100644 Binary files a/Tools/GlrParserGen.exe and b/Tools/GlrParserGen.exe differ diff --git a/Tools/ParserGen.exe b/Tools/ParserGen.exe index c4049f2e..88bd2b73 100644 Binary files a/Tools/ParserGen.exe and b/Tools/ParserGen.exe differ