velour/stop — pull request #27 by eaburns (2014-06-13 23:52:58+00:00)
Title: Add the TypeName node. Identifiers don't implement Type.

I've gone back and forth on this, but I think that this approach is
best. Last time there were TypeName nodes, Types were not Expressions.
This didn't work, because whether something is a type or an expression
can be ambiguous at parse time. So, I removed TypeName nodes (among
other things) and double-purposed Identifiers. That was the state just
before this commit. However, this would be a hinderance at Check time.

With this commit, Identifiers and Selectors do not implement Type.
They are only expressions. Instead, TypeName covers both qualified and
unqualified type names. There are now just a small number of isolated
places where the Check pass needs to determine if an Identifier or
Selector should be replaced with a TypeName instead. For example, in
the expression a(5), 'a' can be either a type (type conversion) or a
function (function call). There are only about two such places.