(* M2Check.def perform rigerous type checking for fully declared symbols. Copyright (C) 2020-2023 Free Software Foundation, Inc. Contributed by Gaius Mulley . This file is part of GNU Modula-2. GNU Modula-2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Modula-2; see the file COPYING3. If not see . *) DEFINITION MODULE M2Check ; (* Title : M2Check Author : Gaius Mulley System : GNU Modula-2 Date : Fri Mar 6 15:32:10 2020 Revision : $Version$ Description: provides a module to check the symbol type compatibility. It assumes that the declaration of all dependants is complete. *) (* ParameterTypeCompatible - returns TRUE if the nth procedure parameter formal is compatible with actual. If the string is empty then no error is issued. *) PROCEDURE ParameterTypeCompatible (token: CARDINAL; format: ARRAY OF CHAR; procedure, formal, actual, nth: CARDINAL; isvar: BOOLEAN) : BOOLEAN ; (* AssignmentTypeCompatible - returns TRUE if the des and the expr are assignment compatible. If the string is empty then no error is issued. *) PROCEDURE AssignmentTypeCompatible (token: CARDINAL; format: ARRAY OF CHAR; des, expr: CARDINAL) : BOOLEAN ; (* ExpressionTypeCompatible - returns TRUE if the expressions, left and right, are expression compatible. If the string is empty then no error is issued. *) PROCEDURE ExpressionTypeCompatible (token: CARDINAL; format: ARRAY OF CHAR; left, right: CARDINAL; strict, isin: BOOLEAN) : BOOLEAN ; END M2Check.