@@ -11,6 +11,9 @@
11/* child %txt /tests/type-full-overlap/child/txt
11/* child %txt /tests/type-full-overlap/child/txt
12/* generic %txt /tests/type-full-overlap/generic/txt
12/* generic %txt /tests/type-full-overlap/generic/txt
13/* duplicate-generic %txt /tests/type-full-overlap/duplicate-generic/txt
13/* duplicate-generic %txt /tests/type-full-overlap/duplicate-generic/txt
14+/* atoms %txt /tests/type-full-overlap/atoms/txt
15+/* flag %txt /tests/type-full-overlap/flag/txt
16+/* nested %txt /tests/type-full-overlap/nested/txt
14/* expected %txt /tests/type-full-overlap/expected-basic/txt
17/* expected %txt /tests/type-full-overlap/expected-basic/txt
16+$ overlap-evidence [file=path source=@t name=term cases=upair:jibb]
19+$ overlap-evidence [file=path source=@t name=term cases=upair:jibb]
@@ -46,8 +49,9 @@
46 |= [file=path source=@t modules=jbundle:jibb]
49 |= [file=path source=@t modules=jbundle:jibb]
47 ^- detailed-result
50 ^- detailed-result
48 (infer-jibb-file-detailed:jibb file source ~ ~ modules ~[file] ~ ~ ~ ~)
51 (infer-jibb-file-detailed:jibb file source ~ ~ modules ~[file] ~ ~ ~ ~)
52+:: The first two cases overlap, written on consecutive lines from .line.
49++ expected-overlap
53++ expected-overlap
50− |= [file=path source=@t name=term]
54+ |= [file=path source=@t name=term line=@ud]
52 =/ expected=(unit upair:jibb) (source-pair file source name)
56 =/ expected=(unit upair:jibb) (source-pair file source name)
53 ?~ expected |
57 ?~ expected |
@@ -61,9 +65,9 @@
61 =(name.ev name)
65 =(name.ev name)
62 =(cases.ev u.expected)
66 =(cases.ev u.expected)
63 =(%overlap relation.cases.ev)
67 =(%overlap relation.cases.ev)
64− =(3 line.beg.first.cases.ev)
68+ =(line line.beg.first.cases.ev)
65 =(3 col.beg.first.cases.ev)
69 =(3 col.beg.first.cases.ev)
66− =(4 line.beg.second.cases.ev)
70+ =(+(line) line.beg.second.cases.ev)
67 =(3 col.beg.second.cases.ev)
71 =(3 col.beg.second.cases.ev)
69++ plain-failure
73++ plain-failure
@@ -75,7 +79,7 @@
75 ?: ?=(%& -.result) |
79 ?: ?=(%& -.result) |
76 &(!=(0 message.p.result) ?=(~ overlap.p.result))
80 &(!=(0 message.p.result) ?=(~ overlap.p.result))
78− |= [same=@t zero=@t unsupported=@t precedence=@t duplicate=@t invalid=@t distinct=@t parent=@t child=@t generic=@t duplicate-generic=@t]
82+ |= [same=@t zero=@t unsupported=@t precedence=@t duplicate=@t invalid=@t distinct=@t parent=@t child=@t generic=@t duplicate-generic=@t atoms=@t flag=@t nested=@t]
79 ^- (list [@t ?])
83 ^- (list [@t ?])
80 =/ root=path /ui/root/jibb
84 =/ root=path /ui/root/jibb
81 =/ names256=(list @t) (turn (gulf 0 255) |=(n=@ud (scot %ud n)))
85 =/ names256=(list @t) (turn (gulf 0 255) |=(n=@ud (scot %ud n)))
@@ -94,6 +98,11 @@
94 ?: ?=(%& -.legacy) |
98 ?: ?=(%& -.legacy) |
95 =/ lines=wain (to-wain:format p.legacy)
99 =/ lines=wain (to-wain:format p.legacy)
96 &((lien lines |=(line=@t =(line '/ui/root.jibb:3:3: first union case'))) (lien lines |=(line=@t =(line '/ui/root.jibb:4:3: overlapping case'))))
100 &((lien lines |=(line=@t =(line '/ui/root.jibb:3:3: first union case'))) (lien lines |=(line=@t =(line '/ui/root.jibb:4:3: overlapping case'))))
101+ :: A projected overlap renders the same error as a source witness.
102+ =/ legacy-atoms=jfile-result:jibb (infer-jibb-file:jibb root atoms ~ ~ ~ ~[root] ~ ~ ~ ~)
103+ =/ legacy-projected=?
104+ ?: ?=(%& -.legacy-atoms) |
105+ =((to-wain:format p.legacy-atoms) ~['module mold bad has overlapping cases' '/ui/root.jibb:2:3: first union case' ' @t' ' ^' '/ui/root.jibb:3:3: overlapping case' ' @ud' ' ^'])
97 =/ imported=detailed-result (detailed root parent ~[[child-file child]])
106 =/ imported=detailed-result (detailed root parent ~[[child-file child]])
98 =/ child-pair=(unit upair:jibb) (source-pair child-file child %child-bad)
107 =/ child-pair=(unit upair:jibb) (source-pair child-file child %child-bad)
99 =/ import-valid=?
108 =/ import-valid=?
@@ -110,9 +119,12 @@
110 :~ ['256 generic parameters accepted by scan' (module-mold-params-valid:jibb names256 *(set @t) 256)]
119 :~ ['256 generic parameters accepted by scan' (module-mold-params-valid:jibb names256 *(set @t) 256)]
111 ['257 generic parameters exhaust scan' !(module-mold-params-valid:jibb names257 *(set @t) 256)]
120 ['257 generic parameters exhaust scan' !(module-mold-params-valid:jibb names257 *(set @t) 256)]
112 ['duplicate generic parameters fail scan' !(module-mold-params-valid:jibb ~['A' 'A'] *(set @t) 256)]
121 ['duplicate generic parameters fail scan' !(module-mold-params-valid:jibb ~['A' 'A'] *(set @t) 256)]
113− ['same head has source-bound overlap' (expected-overlap root same %bad)]
122+ ['same head has source-bound overlap' (expected-overlap root same %bad 3)]
114− ['zero spelling has source-bound overlap' (expected-overlap root zero %bad)]
123+ ['zero spelling has source-bound overlap' (expected-overlap root zero %bad 3)]
115− ['generic wrapper has source-bound overlap' (expected-overlap root generic %bad)]
124+ ['generic wrapper has source-bound overlap' (expected-overlap root generic %bad 3)]
125+ ['two auras have source-bound overlap' (expected-overlap root atoms %bad 2)]
126+ ['flag and yes have source-bound overlap' (expected-overlap root flag %bad 2)]
127+ ['nested equal tags have source-bound overlap' (expected-overlap root nested %bad 2)]
116 ['duplicate generic parameters remain unstructured' (plain-failure root duplicate-generic)]
128 ['duplicate generic parameters remain unstructured' (plain-failure root duplicate-generic)]
117 ['unsupported remains unstructured' (plain-failure root unsupported)]
129 ['unsupported remains unstructured' (plain-failure root unsupported)]
118 ['later overlap exists in precedence source' (source-witness root precedence %bad)]
130 ['later overlap exists in precedence source' (source-witness root precedence %bad)]
@@ -122,6 +134,7 @@
122 ['distinct alias source parses and checks' &(?=(%& -.good-parsed) ?=(%& -.good-result))]
134 ['distinct alias source parses and checks' &(?=(%& -.good-parsed) ?=(%& -.good-result))]
123 ['parent itself has different positive overlap' (source-witness root parent %parent-bad)]
135 ['parent itself has different positive overlap' (source-witness root parent %parent-bad)]
124 ['legacy full-module error contains both excerpts' legacy-excerpts]
136 ['legacy full-module error contains both excerpts' legacy-excerpts]
137+ ['legacy projected overlap error is exact' legacy-projected]
125 ['import overlap retains exact child source' import-valid]
138 ['import overlap retains exact child source' import-valid]
@@ -129,14 +142,14 @@
130 (rap 3 (turn lines |=(line=@t (cat 3 line '\0a'))))
143 (rap 3 (turn lines |=(line=@t (cat 3 line '\0a'))))
132− |= [same=@t zero=@t unsupported=@t precedence=@t duplicate=@t invalid=@t distinct=@t parent=@t child=@t generic=@t duplicate-generic=@t]
145+ |= [same=@t zero=@t unsupported=@t precedence=@t duplicate=@t invalid=@t distinct=@t parent=@t child=@t generic=@t duplicate-generic=@t atoms=@t flag=@t nested=@t]
134− =/ result=(list [@t ?]) (run same zero unsupported precedence duplicate invalid distinct parent child generic duplicate-generic)
147+ =/ result=(list [@t ?]) (run same zero unsupported precedence duplicate invalid distinct parent child generic duplicate-generic atoms flag nested)
135 (of-wain:format (turn result |=(entry=[@t ?] (crip "{(trip -.entry)}: {?:(+.entry "ok" "BAD")}"))))
148 (of-wain:format (turn result |=(entry=[@t ?] (crip "{(trip -.entry)}: {?:(+.entry "ok" "BAD")}"))))
136++ test-full-overlap-basic
149++ test-full-overlap-basic
138 ?~ expected ~[leaf+"expected output missing"]
151 ?~ expected ~[leaf+"expected output missing"]
139− =/ actual=@t (output (text same) (text zero) (text unsupported) (text precedence) (text duplicate) (text invalid) (text distinct) (text parent) (text child) (text generic) (text duplicate-generic))
152+ =/ actual=@t (output (text same) (text zero) (text unsupported) (text precedence) (text duplicate) (text invalid) (text distinct) (text parent) (text child) (text generic) (text duplicate-generic) (text atoms) (text flag) (text nested))
140 ?. =((to-wain:format (cat 3 actual '\0a')) expected)
153 ?. =((to-wain:format (cat 3 actual '\0a')) expected)
141 ~[leaf+"full-module overlap output differs"]
154 ~[leaf+"full-module overlap output differs"]