pub trait Validate<'context, T: ?Sized>where
    T: RNode,
{ type Output; type Context: 'context + Copy; fn validate(&mut self, node: &T, ctxt: Self::Context) -> Self::Output; }
Expand description

Visit with output

Required Associated Types

Required Methods

Implementors

Order:

  1. static properties
  2. static methods, using dependency graph.
  3. TsParamProp in constructors.
  4. Properties from top to bottom.
  5. Others, using dependency graph.

Done

Done

Order of evaluation is important to handle infer types correctly.

We don’t visit enum variants to allow

       const enum E {
           a = 10,
           b = a,
           c = (a+1),
           e,
           d = ~e,
           f = a << 2 >> 1,
           g = a << 2 >>> 1,
           h = a | b
       }

Done

We analyze dependencies between type parameters, and fold parameter in topological order.

NOTE: We does not dig into with statements.