Skip to content

Commit d08b797

Browse files
committed
Detect Option via lang item instead of diagnostics string
1 parent 3275b3d commit d08b797

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

compiler/rustc_codegen_llvm/src/consts.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use rustc_abi::{
55
};
66
use rustc_codegen_ssa::common;
77
use rustc_codegen_ssa::traits::*;
8+
use rustc_hir::LangItem;
89
use rustc_hir::def::DefKind;
910
use rustc_hir::def_id::DefId;
1011
use rustc_middle::middle::codegen_fn_attrs::{CodegenFnAttrFlags, CodegenFnAttrs};
@@ -16,7 +17,6 @@ use rustc_middle::mir::mono::{Linkage, MonoItem};
1617
use rustc_middle::ty::layout::{HasTypingEnv, LayoutOf};
1718
use rustc_middle::ty::{self, Instance};
1819
use rustc_middle::{bug, span_bug};
19-
use rustc_span::sym;
2020
use tracing::{debug, instrument, trace};
2121

2222
use crate::common::{AsCCharPtr, CodegenCx};
@@ -180,9 +180,9 @@ fn check_and_apply_linkage<'ll, 'tcx>(
180180
// instead of an extern_weak i8.
181181
let instance = Instance::mono(cx.tcx, def_id);
182182
if let ty::Adt(struct_def, generic_args) = instance.ty(cx.tcx, cx.typing_env()).kind()
183-
&& matches!(cx.tcx.get_diagnostic_name(struct_def.did()), Some(sym::Option))
184-
&& generic_args.len() == 1
185-
&& let ty::FnPtr(sig, header) = generic_args.first().unwrap().expect_ty().kind()
183+
&& let Some(LangItem::Option) = cx.tcx.lang_items().from_def_id(struct_def.did())
184+
&& let Some(first_arg) = generic_args.first()
185+
&& let ty::FnPtr(sig, header) = first_arg.expect_ty().kind()
186186
{
187187
let fn_sig = sig.with(*header);
188188

0 commit comments

Comments
 (0)