nameExpr is ?=? decl is ?=?: automatically generated function with parameters _dst: pointer to instance of type subrange (not function type) _src: instance of type subrange (not function type) returning instance of type subrange (not function type) with body CompoundStmt Return Statement, returning: Applying untyped: Name: ?=? ...to: Cast of: Variable Expression: _dst: pointer to instance of type subrange (not function type) to: pointer to instance of type base_t (not function type) Cast of: Variable Expression: _src: instance of type subrange (not function type) to: instance of type base_t (not function type) newExpr is Variable Expression: ?=?: function with parameters _dst: pointer to instance of type subrange (not function type) _src: instance of type subrange (not function type) returning instance of type subrange (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: ?=?: function with parameters _dst: pointer to instance of type subrange (not function type) _src: instance of type subrange (not function type) returning instance of type subrange (not function type) (types: pointer to function with parameters _dst: pointer to instance of type subrange (not function type) _src: instance of type subrange (not function type) returning instance of type subrange (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of type subrange (not function type) (types: lvalue pointer to instance of type subrange (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is low nameExpr is high nameExpr is lbound decl is lbound: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters v: instance of type subrange (not function type) with parameters instance of type T (not function type) Name: low Name: high returning instance of type T (not function type) with body CompoundStmt Return Statement, returning: Name: low newExpr is Variable Expression: lbound: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters v: instance of type subrange (not function type) with parameters instance of type T (not function type) Name: low Name: high returning instance of type T (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: lbound: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters v: instance of type subrange (not function type) with parameters instance of type T (not function type) Name: low Name: high returning instance of type T (not function type) (types: pointer to forall _0_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) function with parameters v: instance of type subrange (not function type) with parameters instance of type _0_T (not function type) Name: low Name: high returning instance of type _0_T (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is day_of_month decl is day_of_month: instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int newExpr is Variable Expression: day_of_month: instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: day_of_month: instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int (types: lvalue instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Variable Expression: day_of_month: instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int (types: lvalue instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: lbound: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters v: instance of type subrange (not function type) with parameters instance of type T (not function type) Name: low Name: high returning instance of type T (not function type) (types: pointer to forall _0_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) function with parameters v: instance of type subrange (not function type) with parameters instance of type _0_T (not function type) Name: low Name: high returning instance of type _0_T (not function type) ) Environment: formal type is instance of type subrange (not function type) with parameters instance of type _0_T (not function type) Name: low Name: high actual type is lvalue instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int need assertions: ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) (used)============= original indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== inferRecursive: assertion is ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) inferRecursive: candidate is ?=?: automatically generated function with parameters _dst: pointer to instance of type subrange (not function type) _src: instance of type subrange (not function type) returning instance of type subrange (not function type) with body CompoundStmt Return Statement, returning: Applying untyped: Name: ?=? ...to: Cast of: Variable Expression: _dst: pointer to instance of type subrange (not function type) to: pointer to instance of type base_t (not function type) Cast of: Variable Expression: _src: instance of type subrange (not function type) to: instance of type base_t (not function type) unifying pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) with pointer to function with parameters _dst: pointer to instance of type subrange (not function type) _src: instance of type subrange (not function type) returning instance of type subrange (not function type) success! satisfying assertion 28 ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) with declaration 21 ?=?: automatically generated function with parameters _dst: pointer to instance of type subrange (not function type) _src: instance of type subrange (not function type) returning instance of type subrange (not function type) with body CompoundStmt Return Statement, returning: Applying untyped: Name: ?=? ...to: Cast of: Variable Expression: _dst: pointer to instance of type subrange (not function type) to: pointer to instance of type base_t (not function type) Cast of: Variable Expression: _src: instance of type subrange (not function type) to: instance of type base_t (not function type) inferRecursive: candidate is ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) unifying pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) with pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) success! satisfying assertion 28 ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) with declaration 35 ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) actual expression: Variable Expression: day_of_month: instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int --- results are lvalue instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int converting lvalue instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int to instance of type subrange (not function type) with parameters instance of type _0_T (not function type) Name: low Name: high cost is( -1, -1, 0 ) converting pointer to function with parameters _dst: pointer to instance of type subrange (not function type) _src: instance of type subrange (not function type) returning instance of type subrange (not function type) to pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) cost of conversion is ( 0, 0, 0 ) Case +++++++++++++ formals are: v: instance of type subrange (not function type) with parameters instance of type _0_T (not function type) Name: low Name: high actuals are: Cast of: Variable Expression: day_of_month: instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int to: instance of type subrange (not function type) with parameters instance of type _0_T (not function type) Name: low Name: high bindings are: ( _0_T ) -> instance of type subrange (not function type) (no widening) cost of conversion is:( -1, 2, 0 ) actual expression: Variable Expression: day_of_month: instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int --- results are lvalue instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int converting lvalue instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int to instance of type subrange (not function type) with parameters instance of type _0_T (not function type) Name: low Name: high cost is( -1, -1, 0 ) converting pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) to pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) cost of conversion is ( 0, 0, 0 ) Case +++++++++++++ formals are: v: instance of type subrange (not function type) with parameters instance of type _0_T (not function type) Name: low Name: high actuals are: Cast of: Variable Expression: day_of_month: instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int to: instance of type subrange (not function type) with parameters instance of type _0_T (not function type) Name: low Name: high bindings are: ( _0_T ) -> instance of type T (not function type) (no widening) cost of conversion is:( -1, 2, 0 ) alternatives before prune: Cost ( -1, 2, 0 ): Application of Variable Expression: lbound: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters v: instance of type subrange (not function type) with parameters instance of type T (not function type) Name: low Name: high returning instance of type T (not function type) to arguments Cast of: Variable Expression: day_of_month: instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int to: instance of type subrange (not function type) with parameters instance of type _0_T (not function type) Name: low Name: high with inferred parameters: ?=?: function with parameters _dst: pointer to instance of type subrange (not function type) _src: instance of type subrange (not function type) returning instance of type subrange (not function type) (types: instance of type _0_T (not function type) ) Environment: ( _0_T ) -> instance of type subrange (not function type) (no widening) Cost ( -1, 2, 0 ): Application of Variable Expression: lbound: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters v: instance of type subrange (not function type) with parameters instance of type T (not function type) Name: low Name: high returning instance of type T (not function type) to arguments Cast of: Variable Expression: day_of_month: instance of type subrange (not function type) with parameters unsigned int Name: 1 constant expression 31 signed int to: instance of type subrange (not function type) with parameters instance of type _0_T (not function type) Name: low Name: high with inferred parameters: ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) (types: instance of type _0_T (not function type) ) Environment: ( _0_T ) -> instance of type T (not function type) (no widening) there are 2 alternatives before elimination there are 2 alternatives after elimination nameExpr is ?!=? nameExpr is target decl is target: pointer to instance of type subrange (not function type) with parameters instance of type T (not function type) Name: low Name: high newExpr is Variable Expression: target: pointer to instance of type subrange (not function type) with parameters instance of type T (not function type) Name: low Name: high alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: target: pointer to instance of type subrange (not function type) with parameters instance of type T (not function type) Name: low Name: high (types: lvalue pointer to instance of type subrange (not function type) with parameters instance of type T (not function type) Name: low Name: high ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is ?!=? nameExpr is target decl is target: pointer to instance of type subrange (not function type) with parameters instance of type T (not function type) Name: t_low Name: t_high newExpr is Variable Expression: target: pointer to instance of type subrange (not function type) with parameters instance of type T (not function type) Name: t_low Name: t_high alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: target: pointer to instance of type subrange (not function type) with parameters instance of type T (not function type) Name: t_low Name: t_high (types: lvalue pointer to instance of type subrange (not function type) with parameters instance of type T (not function type) Name: t_low Name: t_high ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination Error: No reasonable alternatives for expression Cast of: Variable Expression: _dst: pointer to instance of type subrange (not function type) to: pointer to instance of type base_t (not function type) Error: No reasonable alternatives for expression Name: low Error: No reasonable alternatives for expression Name: high Error: No reasonable alternatives for expression Cast of: Applying untyped: Name: lbound ...to: Name: day_of_month to: unsigned int Error: No reasonable alternatives for expression Name: ?!=? Error: No reasonable alternatives for expression Cast of: Name: target to: instance of type subrange (not function type) with parameters instance of type T (not function type) Name: low Name: high Error: No reasonable alternatives for expression Name: ?!=? Error: No reasonable alternatives for expression Cast of: Name: target to: instance of type subrange (not function type) with parameters instance of type T (not function type) Name: t_low Name: t_high