Struct rustc_typeck::check::FnCtxt [] [src]

pub struct FnCtxt<'a, 'gcx: 'a + 'tcx, 'tcx: 'a> { /* fields omitted */ }
🔬 This is a nightly-only experimental API. (rustc_private)

Methods

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

The is_arg argument indicates whether this pattern is the outermost pattern in an argument (e.g., in fn foo(&x: &u32), it is true for the &x pattern but not x). This is used to tailor error reporting.

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Region checking during the WF phase for items. wf_tys are the types from which we should derive implied bounds, if any.

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

Attempt to coerce an expression to a type, and return the adjusted type of the expression, if successful. Adjustments are only recorded if the coercion succeeded. The expressions must not have any pre-existing adjustments.

🔬 This is a nightly-only experimental API. (rustc_private)

Given some expressions, their known unified type and another expression, tries to unify the types, potentially inserting coercions on any of the provided expressions and returns their LUB (aka "common supertype").

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

This is used to offer suggestions to users. It returns methods that could have been called which have the desired return type. Some effort is made to rule out methods that, if called, would result in an error (basically, the same criteria we would use to decide if a method is a plausible fit for ambiguity purposes).

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

Determines whether the type self_ty supports a method name method_name or not.

🔬 This is a nightly-only experimental API. (rustc_private)

Performs method lookup. If lookup is successful, it will return the callee and store an appropriate adjustment for the self-expr. In some cases it may report an error (e.g., invoking the drop method).

Arguments

Given a method call like foo.bar::<T1,...Tn>(...):

  • fcx: the surrounding FnCtxt (!)
  • span: the span for the method call
  • method_name: the name of the method being called (bar)
  • self_ty: the (unadjusted) type of the self expression (foo)
  • supplied_method_types: the explicit method type parameters, if any (T1..Tn)
  • self_expr: the self expression (foo)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

lookup_in_trait_adjusted is used for overloaded operators. It does a very narrow slice of what the normal probe/confirm path does. In particular, it doesn't really do any probing: it simply constructs an obligation for aparticular trait with the given self-type and checks whether that trait is implemented.

FIXME(#18741) -- It seems likely that we can consolidate some of this code with the other method-lookup code. In particular, autoderef on index is basically identical to autoderef with normal probes, except that the test also looks for built-in indexing. Also, the second half of this method is basically the same as confirmation.

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Find item with name item_name defined in impl/trait def_id and return it, or None, if no such item was defined there.

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

Check a a <op>= b

🔬 This is a nightly-only experimental API. (rustc_private)

Check a potentially overloaded binary operator.

🔬 This is a nightly-only experimental API. (rustc_private)

impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Registers an obligation for checking later, during regionck, that the type ty must outlive the region r.

🔬 This is a nightly-only experimental API. (rustc_private)

Registers an obligation for checking later, during regionck, that the type ty must outlive the region r.

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Registers obligations that all types appearing in substs are well-formed.

🔬 This is a nightly-only experimental API. (rustc_private)

Given a fully substituted set of bounds (generic_bounds), and the values with which each type/region parameter was instantiated (substs), creates and registers suitable trait/region obligations.

For example, if there is a function:

fn foo<'a,T:'a>(...)

and a reference:

let f = foo;

Then we will create a fresh region variable '$0 and a fresh type variable $1 for 'a and T. This routine will add a region obligation $1:'$0 and register it locally.

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Methods from Deref<Target=Inherited<'a, 'gcx, 'tcx>>

Trait Implementations

impl<'a, 'gcx: 'a + 'tcx, 'tcx: 'a> Clone for FnCtxt<'a, 'gcx, 'tcx>
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl<'a, 'gcx, 'tcx> Deref for FnCtxt<'a, 'gcx, 'tcx>
[src]

The resulting type after dereferencing

The method called to dereference a value