Add initial typechecker for AST #2
@ -21,7 +21,7 @@ typeCheckMethodDeclaration (MethodDeclaration retType name params body) classFie
|
|||||||
let
|
let
|
||||||
-- Combine class fields with method parameters to form the initial symbol table for the method
|
-- Combine class fields with method parameters to form the initial symbol table for the method
|
||||||
methodParams = [(identifier, dataType) | ParameterDeclaration dataType identifier <- params]
|
methodParams = [(identifier, dataType) | ParameterDeclaration dataType identifier <- params]
|
||||||
initialSymtab = ("thisMeth", retType) : classFields ++ methodParams
|
initialSymtab = classFields ++ methodParams
|
||||||
checkedBody = typeCheckStatement body initialSymtab classes
|
checkedBody = typeCheckStatement body initialSymtab classes
|
||||||
bodyType = getTypeFromStmt checkedBody
|
bodyType = getTypeFromStmt checkedBody
|
||||||
-- Check if the type of the body matches the declared return type
|
-- Check if the type of the body matches the declared return type
|
||||||
|
Loading…
Reference in New Issue
Block a user