diff options
| author | bjorn3 <bjorn3@users.noreply.github.com> | 2018-11-27 18:35:35 +0100 |
|---|---|---|
| committer | bjorn3 <bjorn3@users.noreply.github.com> | 2018-11-29 18:19:44 +0100 |
| commit | e45733048eb06da0976e736bb44fe906495d65e9 (patch) | |
| tree | affd0c665e272f667ed02ffbbfd81b5bb12bb881 | |
| parent | f47505e86740223e0cd3516683fa2a4013cf89aa (diff) | |
| download | rust-e45733048eb06da0976e736bb44fe906495d65e9.tar.gz rust-e45733048eb06da0976e736bb44fe906495d65e9.zip | |
Require Deref to CodegenCx for HasCodegen
| -rw-r--r-- | src/librustc_codegen_llvm/builder.rs | 9 | ||||
| -rw-r--r-- | src/librustc_codegen_ssa/traits/mod.rs | 4 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/librustc_codegen_llvm/builder.rs b/src/librustc_codegen_llvm/builder.rs index 06e52fbe76c..907a5db143a 100644 --- a/src/librustc_codegen_llvm/builder.rs +++ b/src/librustc_codegen_llvm/builder.rs @@ -29,7 +29,7 @@ use rustc_codegen_ssa::mir::operand::{OperandValue, OperandRef}; use rustc_codegen_ssa::mir::place::PlaceRef; use std::borrow::Cow; use std::ffi::CStr; -use std::ops::Range; +use std::ops::{Deref, Range}; use std::ptr; // All Builders must have an llfn associated with them @@ -84,6 +84,13 @@ impl ty::layout::LayoutOf for Builder<'_, '_, 'tcx> { } } +impl Deref for Builder<'_, 'll, 'tcx> { + type Target = CodegenCx<'ll, 'tcx>; + + fn deref(&self) -> &Self::Target { + self.cx + } +} impl HasCodegen<'tcx> for Builder<'_, 'll, 'tcx> { type CodegenCx = CodegenCx<'ll, 'tcx>; diff --git a/src/librustc_codegen_ssa/traits/mod.rs b/src/librustc_codegen_ssa/traits/mod.rs index 83ce28b6f8a..5cf48be6cf5 100644 --- a/src/librustc_codegen_ssa/traits/mod.rs +++ b/src/librustc_codegen_ssa/traits/mod.rs @@ -85,7 +85,9 @@ impl<'tcx, T> CodegenMethods<'tcx> for T where { } -pub trait HasCodegen<'tcx>: Backend<'tcx> { +pub trait HasCodegen<'tcx>: + Backend<'tcx> + ::std::ops::Deref<Target = <Self as HasCodegen<'tcx>>::CodegenCx> +{ type CodegenCx: CodegenMethods<'tcx> + BackendTypes< Value = Self::Value, |
