2024-07-15 08:46 AEST

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0000575mercuryBugpublic2024-07-09 17:18
Reporterwangp 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusnewResolutionopen 
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

-Relationships
+Relationships

-Notes
There are no notes attached to this issue.
+Notes

-Issue History
Date Modified Username Field Change
2024-07-09 17:18 wangp New Issue
2024-07-09 17:18 wangp File Added: type_qual_bug.m
+Issue History