I changed the error messages to specify that errors in specification
expressions could arise from either bad derived type components or type
parameters.
I moved error detection for constraint C756 from resolve-names.cpp to
check-declarations.cpp.
I collapsed a nested if statement to a single if with a more complex
condition.
In cases where we detect a type param that was not declared, I created a symbol
marked as erroneous. That avoids subsequent semantic process for expressions
containing the symbol. This change caused me to adjust tests resolve33.f90 and
resolve34.f90. Also, I avoided putting out error messages for erroneous type
param symbols in OkToAddComponent() in resolve-names.cpp and in
EvaluateParameters(), type.cpp.