Make a USR, never failing.
Deduct the type the node represents.
Date: 2015-2016, Joakim Brännström
Initial created: Jan 30, 2012 Copyright (c) 2012 Jacob Carlborg. All rights reserved.
# Interaction flow Pass1, implicit anonymous struct and unions. Pass2, struct or union decl who has no name. Pass3, anonymous instantiated types. Pass4, generic, last decision point for deriving data from the cursor. PassType, derive type from the cursors type.
# Location information The "source" location is only, always the definition. Declarations are "using" locations.
## CS101 refresher. A definition is the information needed to create an instance of the type.
A declaration is a subset of the information that makes it possible to use in most scenarios. The most telling example of an useful declaration is a function declaration, "void foo();". Useful most everywhere. But during linking it must be defined _somewhere_ or a linker error will ensue.
# Future optimization - Skip the primitive types by having them prepoulated in the Container. - Minimize the amoung of data that is propagated by changing TypeResults to ensure only unique USR's exist in it. - Skip pass4+ if the USR already exist in the container.
MPL-2, Mozilla Public License 2.0