use of org.eclipse.titan.designer.AST.ASN1.values.Undefined_Block_Value in project titan.EclipsePlug-ins by eclipse.
the class Undefined_Assignment_O_or_V method classifyAssignment.
@Override
protected void classifyAssignment(final CompilationTimeStamp timestamp, final IReferenceChain referenceChain) {
final boolean newChain = null == referenceChain;
IReferenceChain temporalReferenceChain;
if (newChain) {
temporalReferenceChain = ReferenceChain.getInstance(CIRCULARASSIGNMENTCHAIN, true);
} else {
temporalReferenceChain = referenceChain;
temporalReferenceChain.markState();
}
realAssignment = null;
if (temporalReferenceChain.add(this)) {
if (null != reference && !reference.refersToSettingType(timestamp, Setting_type.S_ERROR, temporalReferenceChain)) {
reference.setMyScope(myScope);
if (null != objectReference) {
objectReference.setMyScope(rightScope);
}
if (identifier.isvalidAsnObjectReference() && reference.refersToSettingType(timestamp, Setting_type.S_OC, temporalReferenceChain)) {
final ObjectClass_refd oc = new ObjectClass_refd(reference);
oc.setLocation(reference.getLocation());
if (null != mBlock) {
final Object_Definition obj = new Object_Definition(mBlock);
// obj.setLocation(right1);
realAssignment = new Object_Assignment(identifier, assPard, oc, obj);
} else if (null != objectReference) {
final ReferencedObject obj = new ReferencedObject(objectReference);
obj.setLocation(objectReference.getLocation());
realAssignment = new Object_Assignment(identifier, assPard, oc, obj);
}
} else if (identifier.isvalidAsnValueReference() && (reference.refersToSettingType(timestamp, Setting_type.S_T, temporalReferenceChain) || reference.refersToSettingType(timestamp, Setting_type.S_VS, temporalReferenceChain))) {
final Referenced_Type type = new Referenced_Type(reference);
if (null != mBlock) {
final Value value = new Undefined_Block_Value(mBlock);
value.setLocation(mBlock.getLocation());
realAssignment = new Value_Assignment(identifier, assPard, type, value);
} else if (null != objectReference) {
final Value value = new Undefined_LowerIdentifier_Value(objectReference.getId().newInstance());
value.setLocation(objectReference.getLocation());
realAssignment = new Value_Assignment(identifier, assPard, type, value);
}
}
}
}
if (null == realAssignment) {
location.reportSemanticError(UNRECOGNISABLEASSIGNMENT);
isErroneous = true;
} else {
realAssignment.setLocation(location);
realAssignment.setMyScope(myScope);
realAssignment.setRightScope(rightScope);
realAssignment.setFullNameParent(this);
}
if (newChain) {
temporalReferenceChain.release();
} else {
temporalReferenceChain.previousState();
}
}
use of org.eclipse.titan.designer.AST.ASN1.values.Undefined_Block_Value in project titan.EclipsePlug-ins by eclipse.
the class Undefined_FieldSpecification method classifyFieldSpecification.
private void classifyFieldSpecification(final CompilationTimeStamp timestamp) {
final IReferenceChain temporalReferenceChain = ReferenceChain.getInstance(IReferenceChain.CIRCULARREFERENCE, true);
if (isOptional && (null != defaultSetting1 || null != mDefaultSetting)) {
location.reportSemanticError("OPTIONAL and DEFAULT are mutually exclusive");
isOptional = false;
}
if (temporalReferenceChain.add(this) && null != governorReference) {
governorReference.setMyScope(myObjectClass.getMyScope());
if (null != defaultSetting1) {
defaultSetting1.setMyScope(myObjectClass.getMyScope());
}
if (identifier.isvalidAsnObjectSetFieldReference() && governorReference.refersToSettingType(timestamp, Setting_type.S_OC, temporalReferenceChain)) {
ObjectSet defaultObjectset = null;
if (null != mDefaultSetting) {
defaultObjectset = new ObjectSet_definition(mDefaultSetting);
}
final ObjectClass_refd oc = new ObjectClass_refd(governorReference);
oc.setLocation(governorReference.getLocation());
fieldSpecification = new ObjectSet_FieldSpecification(identifier, oc, isOptional, defaultObjectset);
} else if (identifier.isvalidAsnObjectFieldReference() && governorReference.refersToSettingType(timestamp, Setting_type.S_OC, temporalReferenceChain)) {
ASN1Object defaultObject = null;
if (null != defaultSetting1) {
defaultObject = new ReferencedObject(defaultSetting1);
} else if (null != mDefaultSetting) {
defaultObject = new Object_Definition(mDefaultSetting);
}
fieldSpecification = new Object_FieldSpecification(identifier, new ObjectClass_refd(governorReference), isOptional, defaultObject);
} else if (identifier.isvalidAsnValueFieldReference() && (governorReference.refersToSettingType(timestamp, Setting_type.S_T, temporalReferenceChain) || governorReference.refersToSettingType(timestamp, Setting_type.S_VS, temporalReferenceChain))) {
IValue defaultValue = null;
if (null != defaultSetting1) {
if (defaultSetting1 instanceof Defined_Reference && null == defaultSetting1.getModuleIdentifier()) {
defaultValue = new Undefined_LowerIdentifier_Value(defaultSetting1.getId().newInstance());
} else {
defaultValue = new Referenced_Value(defaultSetting1);
}
} else if (null != mDefaultSetting) {
defaultValue = new Undefined_Block_Value(mDefaultSetting);
}
fieldSpecification = new FixedTypeValue_FieldSpecification(identifier, new Referenced_Type(governorReference), false, isOptional, null != defaultSetting1 && null != mDefaultSetting, defaultValue);
}
}
if (null == fieldSpecification) {
location.reportSemanticError(CANNOTRECOGNISE);
fieldSpecification = new Erroneous_FieldSpecification(identifier, isOptional, null != defaultSetting1 || null != mDefaultSetting);
} else {
if (null != myObjectClass) {
fieldSpecification.setMyObjectClass(myObjectClass);
}
}
fieldSpecification.setFullNameParent(getNameParent());
fieldSpecification.setLocation(location);
temporalReferenceChain.release();
}
Aggregations