             if isReference node
               defLocation = lookupIdentifier name, node
               if not defLocation
+                names = findMissing hoistableWheres, name
                 if nonstrict
-                  warnings.push "#{name} used but not defined"
+                  warnings.push "#{names.join ', '} used but not defined"
                 else
-                  throw new Error "#{name} used but not defined"
+                  throw new Error "#{names.join ', '} used but not defined"
             escapedName
 
 isList = (node) ->


expandMacro = (macro) ->
  macros[macro]?() ? macro

validIdentifier = (name) ->
  [firstChar] = name

  if matchNode 'match', node
    [op, args...] = inside node
    return trueMacros[op.token] hoistableWheres, args...

  switch node.type
    when 'comment' then 'null'
