// to the LexicalScope for this class.
Collection<ICompilerProblem> problems = constantValue != null ? constantValue.getProblems() : null;
if (problems != null)
classScope.addProblems(problems);
final MethodBodySemanticChecker checker = new MethodBodySemanticChecker(this.classScope);
DefinitionBase varType = (DefinitionBase)varDef.resolveType(project);
Object transformed_initializer = null;
if ((initializer != null) && (varType != null))
{
transformed_initializer =
checker.checkInitialValue(var, new Binding(null, varType.getMName(this.classScope.getProject()), varType), new PooledValue(initializer)).getValue();
}
else
{
transformed_initializer = initializer;
}
ITraitVisitor tv = declareVariable(var, varDef, is_static, is_const, transformed_initializer);
if ( is_static )
this.classStaticScope.processMetadata(tv, getAllMetaTags(varDef));
else
this.classScope.processMetadata(tv, getAllMetaTags(varDef));
tv.visitEnd();
// Generate variable initializers and append them to the
// proper initialization list.
if ( transformed_initializer == null && var.getAssignedValueNode() != null )
{
// Emit initialization instructions for non-static vars. Static var
// instructions will be emitted during finishClassDefinition()
if (is_static)
staticVariableInitializers.add(var);
else
generateInstructions(var, false);
}
else
{
checker.checkClassField(var, is_static);
// Massive kludge -- grovel over chained variable decls and add them one by one
for ( int i = 0; i < var.getChildCount(); i++ )
{
IASNode candidate = var.getChild(i);