     else
       malformed ctx, atom, 'Unrecognized character'
       ''
-  type: toConstrained charType
+  type: toConstrained markOrigin charType, atom
   translation: translation
   pattern: literalPattern ctx, translation
 
 stringCompile = (ctx, atom, symbol) ->
-  type: toConstrained stringType
+  type: toConstrained markOrigin stringType, atom
   translation: symbol
   pattern: literalPattern ctx, symbol
 

    else
      # Fake a function call for empty parens
      if terms.length is 1
        terms = join terms, [tea: toConstrained (markOrigin (ctx.freshTypeVariable star), call)]
      callInfer ctx, (_operator call), terms

callInfer = (ctx, operator, terms) ->

      atom.label = 'name'
      id = (ctx.definitionName() and ctx.definitionId()) ?
        (ctx.currentDeclarationId symbol) ? ctx.freshId()
      type = toConstrained withOrigin (ctx.freshTypeVariable star), atom
      # ctx.bindTypeVariables [type.type.name]
      ctx.addToDefinedNames {name: symbol, id: id, type: type}
      type: type
