dargent: only allow exact match for prim types [skip bamboo]
diff --git a/cogent/src/Cogent/TypeCheck/Solver/Simplify.hs b/cogent/src/Cogent/TypeCheck/Solver/Simplify.hs index 6c42e7d..3d16c16 100644 --- a/cogent/src/Cogent/TypeCheck/Solver/Simplify.hs +++ b/cogent/src/Cogent/TypeCheck/Solver/Simplify.hs
@@ -189,7 +189,7 @@ TLPrim n :~ T TUnit | evalSize n >= 0 -> hoistMaybe $ Just [] TLPrim n :~ tau | isPrimType tau - , primTypeSize tau <= evalSize n + , primTypeSize tau == evalSize n -> hoistMaybe $ Just [] | isBoxedType tau , evalSize n == pointerSizeBits
diff --git a/cogent/tests/tests/dargent/config.yaml b/cogent/tests/tests/dargent/config.yaml index dea8527..32a9ef3 100644 --- a/cogent/tests/tests/dargent/config.yaml +++ b/cogent/tests/tests/dargent/config.yaml
@@ -17,6 +17,7 @@ - fail_layout-no-overlapping.cogent - fail_layout-too-small-prim.cogent - fail_layout-unboxed.cogent + - fail_ticket-381.cogent expected_result: fail flags: - -t
diff --git a/cogent/tests/tests/dargent/fail_ticket-381.cogent b/cogent/tests/tests/dargent/fail_ticket-381.cogent new file mode 100644 index 0000000..77fd5ad --- /dev/null +++ b/cogent/tests/tests/dargent/fail_ticket-381.cogent
@@ -0,0 +1,4 @@ +type R = { f : U32 } layout record { f: 77b at 44b } + +foo : R -> R +foo r { f } = r { f }
diff --git a/cogent/tests/tests/dargent/pass_layout-operator.cogent b/cogent/tests/tests/dargent/pass_layout-operator.cogent index b4bc034..5075bc7 100644 --- a/cogent/tests/tests/dargent/pass_layout-operator.cogent +++ b/cogent/tests/tests/dargent/pass_layout-operator.cogent
@@ -1,5 +1,5 @@ -foo : () -> { a : U8 } layout record { a : 4B at 1B } +foo : () -> { a : U8 } layout record { a : 8b at 1B } bar : () -> { a : U8 }