Mercury Bugs - mercury
View Issue Details
0000575mercuryBugpublic2024-07-09 17:182024-07-09 17:18
Reporterwangp 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusnewResolutionopen 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0000575: type qualification scope bug
DescriptionExplicit type qualification is processed before quantification, leading to variables being given explicit types without taking into account that variables with the same name might be in different scopes.



:- module type_qual_bug.
:- interface.

:- pred bug1 is det.
:- pred bug2 is det.

:- implementation.

:- type foo1
    ---> foo(int).

:- type foo2
    ---> foo(int).

bug1 :-
    % X is assigned the type foo1 due to an explicit type qualification.
    % Later, when the Xs are renamed apart, the type is copied over to both
    % new variables. Obviously, the two Xs are not supposed to be related.
    some [X] (
        X = foo(1) : foo1
    ),
    some [X] (
        X = foo(2) : foo2
    ).

bug2 :-
    % Both X variables end up with type foo2, so this compiles.
    % But the type of the first X should be ambiguous.
    some [X] (
        X = foo(1)
    ),
    some [X] (
        X = foo(2) : foo2
    ).
TagsNo tags attached.
Attached Files? type_qual_bug.m (720) 2024-07-09 17:18
https://bugs.mercurylang.org/file_download.php?file_id=331&type=bug

There are no notes attached to this issue.

Issue History
2024-07-09 17:18wangpNew Issue
2024-07-09 17:18wangpFile Added: type_qual_bug.m