This problem will be fixed in the next maintenance release. During investigation it was discovered that there are possible legitimate use cases of exported procedures with parameters of private types. For example:
Code: Select all
MODULE PrivateType;
IMPORT M;
VAR
value: INTEGER;
BEGIN
ASSERT(M.IsDefined(M.r));
value := M.Value(M.r)
END PrivateType.
Code: Select all
MODULE M;
TYPE
R = RECORD value: INTEGER; defined: BOOLEAN END;
VAR
r*: R;
PROCEDURE IsDefined*(r: R): BOOLEAN;
RETURN r.defined
END IsDefined;
PROCEDURE Value*(r: R): INTEGER;
RETURN r.value
END Value;
BEGIN
r.defined := FALSE
END M.
Consequently the severity of the resulting messages will be downgraded from errors to warnings:
Code: Select all
compiling M
Line Col
9 29 Warning: parameter type is not exported
13 25 Warning: parameter type is not exported