Detect errors when dereferencing an undeclared variable.
Attempting to dereference an undeclared variable will cause an ICE. Also attempting to pass an undeclared variable as an array of type will also cause an ICE. This patch detects both conditions and generates an appropriate error. gcc/m2/ChangeLog: * gm2-compiler/M2Quads.mod (AssignUnboundedVar): Check Type against NulSym and call MetaErrorT1 if necessary. (AssignUnboundedNonVar): Check Type against NulSym and call MetaErrorT1 if necessary. (BuildDesignatorPointer): Check Type1 against NulSym and call MetaErrorT1 if necessary. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
This commit is contained in:
parent
b1f30bf42d
commit
a0c595386f
1 changed files with 12 additions and 3 deletions
|
@ -6327,7 +6327,10 @@ BEGIN
|
|||
ELSIF IsVar(Sym)
|
||||
THEN
|
||||
Type := GetDType(Sym) ;
|
||||
IF IsUnbounded(Type)
|
||||
IF Type = NulSym
|
||||
THEN
|
||||
MetaErrorT1 (tok, '{%1ad} has no type and cannot be passed to a VAR formal parameter', Sym)
|
||||
ELSIF IsUnbounded(Type)
|
||||
THEN
|
||||
IF Type = GetSType (UnboundedSym)
|
||||
THEN
|
||||
|
@ -6382,7 +6385,10 @@ BEGIN
|
|||
ELSIF IsVar (Sym)
|
||||
THEN
|
||||
Type := GetDType (Sym) ;
|
||||
IF IsUnbounded (Type)
|
||||
IF Type = NulSym
|
||||
THEN
|
||||
MetaErrorT1 (tok, '{%1ad} has no type and cannot be passed to a non VAR formal parameter', Sym)
|
||||
ELSIF IsUnbounded (Type)
|
||||
THEN
|
||||
UnboundedNonVarLinkToArray (tok, Sym, ArraySym, UnboundedSym, ParamType, dim)
|
||||
ELSIF IsArray (Type) OR IsGenericSystemType (ParamType)
|
||||
|
@ -11386,7 +11392,10 @@ VAR
|
|||
BEGIN
|
||||
PopTFrwtok (Sym1, Type1, rw, exprtok) ;
|
||||
Type1 := SkipType (Type1) ;
|
||||
IF IsUnknown (Sym1)
|
||||
IF Type1 = NulSym
|
||||
THEN
|
||||
MetaErrorT1 (ptrtok, '{%1ad} has no type and therefore cannot be dereferenced by ^', Sym1)
|
||||
ELSIF IsUnknown (Sym1)
|
||||
THEN
|
||||
MetaError1 ('{%1EMad} is undefined and therefore {%1ad}^ cannot be resolved', Sym1)
|
||||
ELSIF IsPointer (Type1)
|
||||
|
|
Loading…
Add table
Reference in a new issue