       else
         typeConstrainedCompile ctx, call
     if hasName
-      declareExplicitlyTyped ctx, compiledType
+      preDeclareExplicitlyTyped ctx, compiledType
     # TODO: support typing of expressions,
     #watch out of definition patterns without a name
     jsNoop()

isFailed = (sub) ->
  sub.fails.length > 0

substituionFail = (failure) ->
  sub = emptySubstitution()
  sub.fails.push failure
  sub

      [t2, t1]
    else
      [t1, t2]
  substitutionFail
    message: "#{message} #{(safePrintType first)}, #{(safePrintType second)}"
    conflicts: [first.origin, second.origin]

