Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0006804OCamlback end (clambda to assembly)public2015-03-05 11:012016-12-07 11:47
Reporterchambart 
Assigned Tofrisch 
PrioritynormalSeveritycrashReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version4.03.0+dev / +beta1 
Target VersionFixed in Version4.03.0+dev / +beta1 
Summary0006804: Match specialisation broken
DescriptionThe function Closure.find_action is wrong, an example of failing code:

  type t =
    | A0 of unit
    | A1 of unit
    | A2 of unit

  let f x = match x with
    | A0 () -> 1
    | A1 () | A2 () -> 2

  let v = f (A1 ())

This was introduced in commit 15812
see https://github.com/ocaml/ocaml/commit/c38fc546dcddd768f0affd645c8c526b0df254f4 [^]
TagsNo tags attached.
Attached Files

- Relationships

-  Notes
(0013390)
frisch (developer)
2015-03-05 17:09

Thanks, fixed by commit 15880 on trunk. Do you know if it is possible for find_action to return None? (i.e. if the matched value can be outside the specified cases)
(0013391)
chambart (developer)
2015-03-05 20:21

No real value could correspond to that, but the usual problem with unreachable code and GADT can occur.

- Issue History
Date Modified Username Field Change
2015-03-05 11:01 chambart New Issue
2015-03-05 17:09 frisch Note Added: 0013390
2015-03-05 17:12 frisch Assigned To => frisch
2015-03-05 17:12 frisch Status new => assigned
2015-03-05 20:21 chambart Note Added: 0013391
2015-03-11 10:23 frisch Status assigned => resolved
2015-03-11 10:23 frisch Resolution open => fixed
2015-03-11 10:23 frisch Fixed in Version => 4.03.0+dev / +beta1
2016-12-07 11:47 xleroy Status resolved => closed
2017-02-23 16:35 doligez Category OCaml backend (code generation) => Back end (clambda to assembly)
2017-02-23 16:44 doligez Category Back end (clambda to assembly) => back end (clambda to assembly)


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker