Skip to content

Commit a8c9e41

Browse files
committed
add CoerceUnsized to parser
1 parent 7d0e954 commit a8c9e41

File tree

7 files changed

+8
-7
lines changed

7 files changed

+8
-7
lines changed

chalk-integration/src/lowering.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1156,6 +1156,7 @@ impl Lower for WellKnownTrait {
11561156
WellKnownTrait::Fn => rust_ir::WellKnownTrait::Fn,
11571157
WellKnownTrait::Unsize => rust_ir::WellKnownTrait::Unsize,
11581158
WellKnownTrait::Unpin => rust_ir::WellKnownTrait::Unpin,
1159+
WellKnownTrait::CoerceUnsized => rust_ir::WellKnownTrait::CoerceUnsized,
11591160
}
11601161
}
11611162
}

chalk-parse/src/ast.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ pub enum WellKnownTrait {
127127
Fn,
128128
Unsize,
129129
Unpin,
130+
CoerceUnsized,
130131
}
131132

132133
#[derive(Clone, PartialEq, Eq, Debug)]

chalk-parse/src/parser.lalrpop

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ WellKnownTrait: WellKnownTrait = {
6363
"#" "[" "lang" "(" "fn" ")" "]" => WellKnownTrait::Fn,
6464
"#" "[" "lang" "(" "unsize" ")" "]" => WellKnownTrait::Unsize,
6565
"#" "[" "lang" "(" "unpin" ")" "]" => WellKnownTrait::Unpin,
66+
"#" "[" "lang" "(" "coerce_unsized" ")" "]" => WellKnownTrait::CoerceUnsized,
6667
};
6768

6869
AdtRepr: Atom = "#" "[" "repr" "(" <name:Id> ")" "]" => name.str;

chalk-solve/src/clauses/builtin_traits.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,8 @@ pub fn add_builtin_program_clauses<I: Interner>(
4141
WellKnownTrait::Unsize => {
4242
unsize::add_unsize_program_clauses(db, builder, &trait_ref, ty)
4343
}
44-
45-
// Drop impls are provided explicitly
46-
WellKnownTrait::Drop => (),
47-
48-
// There are no special rules for Unpin
49-
WellKnownTrait::Unpin => (),
44+
// There are no builtin impls provided for the following traits:
45+
WellKnownTrait::Unpin | WellKnownTrait::Drop | WellKnownTrait::CoerceUnsized => (),
5046
}
5147
Ok(())
5248
})

chalk-solve/src/display/items.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ impl<I: Interner> RenderAsRust<I> for TraitDatum<I> {
194194
WellKnownTrait::Fn => "fn",
195195
WellKnownTrait::Unsize => "unsize",
196196
WellKnownTrait::Unpin => "unpin",
197+
WellKnownTrait::CoerceUnsized => "coerce_unsized",
197198
};
198199
writeln!(f, "#[lang({})]", name)?;
199200
}

chalk-solve/src/rust_ir.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ pub enum WellKnownTrait {
270270
Fn,
271271
Unsize,
272272
Unpin,
273+
CoerceUnsized,
273274
}
274275

275276
chalk_ir::const_visit!(WellKnownTrait);

chalk-solve/src/wf.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ where
338338
WellKnownTrait::Drop => {
339339
WfWellKnownConstraints::drop_impl_constraint(&mut *solver, self.db, &impl_datum)
340340
}
341-
WellKnownTrait::Clone | WellKnownTrait::Unpin => true,
341+
WellKnownTrait::Clone | WellKnownTrait::Unpin | WellKnownTrait::CoerceUnsized => true,
342342
// You can't add a manual implementation for the following traits:
343343
WellKnownTrait::Fn
344344
| WellKnownTrait::FnOnce

0 commit comments

Comments
 (0)