PR modula2/110003 Wrong source line listed for unused parameters

Ensure that the parameter token position is recorded for both
definition and implementation modules.  The shadow variable
is created inside BuildFormalParameterSection.  The shadow
variable needs to have the other definition or implementation module
token position set when CheckFormalParameterSection is called.
This allows the MetaError family of procedures to request the
implementation module token position when reporting unused parameters.

gcc/m2/ChangeLog:

	PR modula2/110003
	* gm2-compiler/P2SymBuild.mod (GetParameterShadowVar): Import.
	(CheckFormalParameterSection): Call PutDeclared for the shadow
	variable associated with the parameter.

Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
This commit is contained in:
Gaius Mulley 2023-06-03 15:27:58 +01:00
parent 38af81df6a
commit 7c0e2159af

View file

@ -59,7 +59,7 @@ FROM SymbolTable IMPORT NulSym,
MakeSubrange,
MakeVar, MakeType, PutType,
MakeModuleCtor,
PutMode, PutDeclared,
PutMode, PutDeclared, GetParameterShadowVar,
PutFieldEnumeration, PutSubrange, PutVar, PutConst,
PutConstSet, PutConstructor,
IsDefImp, IsType, IsRecord, IsRecordField, IsPointer,
@ -1820,14 +1820,15 @@ BEGIN
(* different parameter names *)
FailParameter('',
'the parameter has been declared with a different name',
OperandT(pi), ParamTotal+i, ProcSym)
OperandT (pi), ParamTotal+i, ProcSym)
END
ELSE
IF GetSymName(ParamI)=NulName
IF GetSymName (ParamI) = NulName
THEN
PutParamName (OperandTok (pi), ProcSym, ParamTotal+i, OperandT(pi))
PutParamName (OperandTok (pi), ProcSym, ParamTotal+i, OperandT (pi))
END
END ;
PutDeclared (OperandTok (pi), GetParameterShadowVar (ParamI)) ;
IF Unbounded
THEN
(* GetType(ParamI) yields an UnboundedSym or a PartialUnboundedSym,