mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-25 06:14:18 +00:00
For review by anyone. Estimated hours taken: 10 Branches: main, release Do not allow non-abstract instance declarations to occur in module interfaces. Emit an error message if this occurs. Fix the formatting of some error messages regarding typeclasses and instances. compiler/check_typeclass.m: Use error_util to generate the error messages from this module. This fixes a problem where the printing of sym_names and arities differed in the same error message. compiler/error_util.m: Add a format component for the pred_or_func type. Add the equivalence type format_components. compiler/make_hlds.m: Make the format of some error messages concerning typeclasses more consistent. compiler/modules.m: Check for non-abstract instance declarations in module interfaces and emit an error message if they do. tests/invalid/Mmakefile: tests/invalid/instance_bug.m: tests/invalid/instance_bug.err_exp: Test case for the above. tests/hard_coded/typeclasses/*: tests/invalid/*: tests/recompilation/*: tests/valid/*: Update test cases as necessary.
19 lines
279 B
Mathematica
19 lines
279 B
Mathematica
:- module instance_bug.
|
|
|
|
:- interface.
|
|
|
|
:- typeclass foo(T) where [
|
|
func id(T) = T
|
|
].
|
|
% Compiler should complain about this.
|
|
:- instance foo(int) where [
|
|
id(X) = X
|
|
].
|
|
|
|
:- implementation.
|
|
|
|
% Compiler shouldn't complain about this.
|
|
:- instance foo(float) where [
|
|
id(X) = X
|
|
].
|