@@ -118,6 +118,10 @@ let c_attr (attr : Thir.attribute) : attr option =
118118 in
119119 let kind = DocComment { kind; body = comment } in
120120 Some { kind; span = Span. of_thir span }
121+ | Parsed (AutomaticallyDerived span ) ->
122+ (* Restore behavior before PR #1534 *)
123+ let kind = Tool { path = " automatically_derived" ; tokens = " " } in
124+ Some { kind; span = Span. of_thir span }
121125 | Unparsed { args = Eq { expr = { symbol; _ } ; _ } ; path = "doc" ; span; _ } ->
122126 (* Looks for `#[doc = "something"]` *)
123127 let kind = DocComment { kind = DCKLine ; body = symbol } in
@@ -1105,8 +1109,6 @@ end) : EXPR = struct
11051109 match non_traits with
11061110 | [] -> TDyn { witness = W. dyn; goals }
11071111 | _ -> assertion_failure [ span ] " type Dyn with non trait predicate" )
1108- | Dynamic (_ , _ , DynStar) ->
1109- unimplemented ~issue_id: 931 [ span ] " type DynStar"
11101112 | Coroutine _ ->
11111113 unimplemented ~issue_id: 924 [ span ]
11121114 " Got type `Coroutine`: coroutines are not supported by hax"
@@ -1377,7 +1379,7 @@ let is_automatically_derived (attrs : Thir.attribute list) =
13771379 ~f: (function
13781380 (* This will break once these attributes get properly parsed. It will
13791381 then be very easy to parse them correctly *)
1380- | Unparsed { path; _ } -> String. equal path " automatically_derived "
1382+ | Parsed (AutomaticallyDerived _ ) -> true
13811383 | _ -> false )
13821384 attrs
13831385
@@ -1516,7 +1518,7 @@ and c_item_unwrapped ~ident ~type_only (item : Thir.item) : item list =
15161518 in
15171519 (* TODO: things might be unnamed (e.g. constants) *)
15181520 match (item.kind : Thir.item_kind ) with
1519- | Const (_ , _ , generics , body ) ->
1521+ | Const (_ , generics , _ , body ) ->
15201522 mk
15211523 @@ Fn
15221524 {
@@ -1526,14 +1528,14 @@ and c_item_unwrapped ~ident ~type_only (item : Thir.item) : item list =
15261528 params = [] ;
15271529 safety = Safe ;
15281530 }
1529- | Static (_ , _ , true , _ ) ->
1531+ | Static (true , _ , _ , _ ) ->
15301532 unimplemented ~issue_id: 1343 [ item.span ]
15311533 " Mutable static items are not supported."
1532- | Static (_ , _ty , false , body ) ->
1534+ | Static (false , _ , _ty , body ) ->
15331535 let name = Concrete_ident. of_def_id ~value: true (assert_item_def_id () ) in
15341536 let generics = { params = [] ; constraints = [] } in
15351537 mk (Fn { name; generics; body = c_body body; params = [] ; safety = Safe })
1536- | TyAlias (_ , ty , generics ) ->
1538+ | TyAlias (_ , generics , ty ) ->
15371539 mk
15381540 @@ TyAlias
15391541 {
@@ -1552,13 +1554,13 @@ and c_item_unwrapped ~ident ~type_only (item : Thir.item) : item list =
15521554 params = c_fn_params item.span params;
15531555 safety = c_header_safety safety;
15541556 }
1555- | (Enum (_ , _ , generics , _ ) | Struct (_ , _ , generics )) when erased ->
1557+ | (Enum (_ , generics , _ , _ ) | Struct (_ , generics , _ )) when erased ->
15561558 let generics = c_generics generics in
15571559 let is_struct = match item.kind with Struct _ -> true | _ -> false in
15581560 let def_id = assert_item_def_id () in
15591561 let name = Concrete_ident. of_def_id ~value: false def_id in
15601562 mk @@ Type { name; generics; variants = [] ; is_struct }
1561- | Enum (_ , variants , generics , repr ) ->
1563+ | Enum (_ , generics , variants , repr ) ->
15621564 let def_id = assert_item_def_id () in
15631565 let generics = c_generics generics in
15641566 let is_struct = false in
@@ -1616,7 +1618,7 @@ and c_item_unwrapped ~ident ~type_only (item : Thir.item) : item list =
16161618 mk_one (Type { name; generics; variants; is_struct }) :: discs
16171619 in
16181620 if is_primitive then cast_fun :: result else result
1619- | Struct (_ , v , generics ) ->
1621+ | Struct (_ , generics , v ) ->
16201622 let generics = c_generics generics in
16211623 let def_id = assert_item_def_id () in
16221624 let is_struct = true in
@@ -1643,7 +1645,7 @@ and c_item_unwrapped ~ident ~type_only (item : Thir.item) : item list =
16431645 let variants = [ v ] in
16441646 let name = Concrete_ident. of_def_id ~value: false def_id in
16451647 mk @@ Type { name; generics; variants; is_struct }
1646- | Trait (No, safety , _ , generics , _bounds , items ) ->
1648+ | Trait (NotConst, No, safety , _ , generics , _bounds , items ) ->
16471649 let items =
16481650 List. filter
16491651 ~f: (fun { attributes; _ } -> not (should_skip attributes))
@@ -1666,8 +1668,10 @@ and c_item_unwrapped ~ident ~type_only (item : Thir.item) : item list =
16661668 let items = List. map ~f: c_trait_item items in
16671669 let safety = csafety safety in
16681670 mk @@ Trait { name; generics; items; safety }
1669- | Trait (Yes, _ , _ , _ , _ , _ ) ->
1671+ | Trait (_ , Yes, _ , _ , _ , _ , _ ) ->
16701672 unimplemented ~issue_id: 930 [ item.span ] " Auto trait"
1673+ | Trait (Const, _ , _ , _ , _ , _ , _ ) ->
1674+ unimplemented ~issue_id: 930 [ item.span ] " Const trait"
16711675 | Impl { of_trait = None ; generics; items; _ } ->
16721676 let items =
16731677 List. filter
@@ -1814,7 +1818,9 @@ and c_item_unwrapped ~ident ~type_only (item : Thir.item) : item list =
18141818 {
18151819 path = List. map ~f: (fun x -> fst x.ident) segments;
18161820 is_external =
1817- List. exists ~f: (function Err -> true | _ -> false ) res;
1821+ List. exists
1822+ ~f: (function None | Some Err -> true | _ -> false )
1823+ res;
18181824 (* TODO: this should represent local/external? *)
18191825 rename;
18201826 }
0 commit comments