|
@@ -4604,6 +4604,7 @@ TYPE
|
|
formalParameter: SyntaxTree.Parameter;
|
|
formalParameter: SyntaxTree.Parameter;
|
|
actualParameter: SyntaxTree.Expression;
|
|
actualParameter: SyntaxTree.Expression;
|
|
i: LONGINT;
|
|
i: LONGINT;
|
|
|
|
+ self: SyntaxTree.Expression;
|
|
BEGIN
|
|
BEGIN
|
|
IF Trace THEN D.Str("ProcedureCallDesignator"); D.Ln; END;
|
|
IF Trace THEN D.Str("ProcedureCallDesignator"); D.Ln; END;
|
|
result := SyntaxTree.invalidDesignator;
|
|
result := SyntaxTree.invalidDesignator;
|
|
@@ -4615,7 +4616,12 @@ TYPE
|
|
Error(position, "forbidden call of non-realtime procedure in realtime block");
|
|
Error(position, "forbidden call of non-realtime procedure in realtime block");
|
|
END;
|
|
END;
|
|
|
|
|
|
-
|
|
|
|
|
|
+ IF (formalType.selfParameter # NIL) & (formalType.selfParameter.kind = SyntaxTree.VarParameter) THEN
|
|
|
|
+ self := left.left;
|
|
|
|
+ IF (self # NIL) & ~IsVariable(self) THEN
|
|
|
|
+ Error(self.position, "Non-variable expression on variable receiver");
|
|
|
|
+ END;
|
|
|
|
+ END;
|
|
|
|
|
|
IF ~ExpressionList(actualParameters) THEN
|
|
IF ~ExpressionList(actualParameters) THEN
|
|
result := SyntaxTree.invalidDesignator
|
|
result := SyntaxTree.invalidDesignator
|