From 72d8a92f70554afc503bdee433d57dae502025e2 Mon Sep 17 00:00:00 2001 From: Jaroslav Louma Date: Wed, 29 Nov 2023 12:51:39 +0100 Subject: [PATCH] Updated some error codes --- src/compiler/analyser/Analyser.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/compiler/analyser/Analyser.c b/src/compiler/analyser/Analyser.c index 5499f96..ed749cf 100644 --- a/src/compiler/analyser/Analyser.c +++ b/src/compiler/analyser/Analyser.c @@ -693,7 +693,7 @@ AnalyserResult __Analyser_analyseBlock(Analyser *analyser, BlockASTNode *block) if(function->node->parameterList->parameters->size == 0) { return AnalyserError( - RESULT_ERROR_SEMANTIC_OTHER, // TODO + RESULT_ERROR_SEMANTIC_VARIABLE_REDEFINITION, // TODO: Fixed String_fromFormat("invalid redeclaration of '%s'", declaration->name->value), NULL ); @@ -822,7 +822,7 @@ AnalyserResult __Analyser_analyseBlock(Analyser *analyser, BlockASTNode *block) if(variable) { return AnalyserError( - RESULT_ERROR_SEMANTIC_VARIABLE_REDEFINITION, // TODO ? + RESULT_ERROR_SEMANTIC_VARIABLE_REDEFINITION, // TODO: Fixed String_fromFormat("invalid redeclaration of '%s'", declaration->node->id->name->value), NULL ); @@ -1015,8 +1015,8 @@ AnalyserResult Analyser_resolveExpressionType(Analyser *analyser, ExpressionASTN } } - Array /**/ *overloads = Analyser_getFunctionDeclarationsByName(analyser, call->id->name->value); - Array /**/ *candidates = NULL; + Array /* | null*/ *overloads = Analyser_getFunctionDeclarationsByName(analyser, call->id->name->value); + Array /* | null*/ *candidates = NULL; bool hasMultipleCandidates = false; FunctionDeclaration *declaration = NULL; @@ -1742,6 +1742,15 @@ AnalyserResult __Analyser_collectFunctionDeclarations(Analyser *analyser) { ); } + // External paramter is missing (this is required in the assignment) + if(!parameter->externalId) { + return AnalyserError( + RESULT_ERROR_SYNTACTIC_ANALYSIS, + String_fromFormat("external parameter name missing in parameter '%s'", name->value), + NULL + ); + } + // Both name and label are the same if(parameter->externalId && String_equals(name, parameter->externalId->name->value)) { return AnalyserError(