use of org.eclipse.xsemantics.runtime.Result in project n4js by eclipse.
the class InternalTypeSystem method applyRuleSubtypeExistentialTypeRef_Left.
protected Result<Boolean> applyRuleSubtypeExistentialTypeRef_Left(final RuleEnvironment G, final RuleApplicationTrace _trace_, final ExistentialTypeRef existentialTypeRef, final TypeRef right) throws RuleFailedException {
boolean _isExistentialTypeToBeReopened = RuleEnvironmentExtensions.isExistentialTypeToBeReopened(G, existentialTypeRef);
if (_isExistentialTypeToBeReopened) {
final Wildcard wildThing = existentialTypeRef.getWildcard();
/* G |~ wildThing /\ var TypeRef upperBound */
TypeRef upperBound = null;
Result<TypeRef> result = upperBoundInternal(G, _trace_, wildThing);
checkAssignableTo(result.getFirst(), TypeRef.class);
upperBound = (TypeRef) result.getFirst();
/* G |~ wildThing \/ var TypeRef lowerBound */
TypeRef lowerBound = null;
Result<TypeRef> result_1 = lowerBoundInternal(G, _trace_, wildThing);
checkAssignableTo(result_1.getFirst(), TypeRef.class);
lowerBound = (TypeRef) result_1.getFirst();
/* G |- right <: upperBound */
subtypeInternal(G, _trace_, right, upperBound);
/* G |- lowerBound <: right */
subtypeInternal(G, _trace_, lowerBound, right);
} else {
/* existentialTypeRef===right or { G |~ existentialTypeRef /\ var TypeRef upperExt G |- upperExt <: right } */
{
RuleFailedException previousFailure = null;
try {
/* existentialTypeRef===right */
if (!(existentialTypeRef == right)) {
sneakyThrowRuleFailedException("existentialTypeRef===right");
}
} catch (Exception e) {
previousFailure = extractRuleFailedException(e);
/* G |~ existentialTypeRef /\ var TypeRef upperExt */
TypeRef upperExt = null;
Result<TypeRef> result_2 = upperBoundInternal(G, _trace_, existentialTypeRef);
checkAssignableTo(result_2.getFirst(), TypeRef.class);
upperExt = (TypeRef) result_2.getFirst();
/* G |- upperExt <: right */
subtypeInternal(G, _trace_, upperExt, right);
}
}
}
return new Result<Boolean>(true);
}
use of org.eclipse.xsemantics.runtime.Result in project n4js by eclipse.
the class InternalTypeSystem method applyRuleTypeParenExpression.
protected Result<TypeRef> applyRuleTypeParenExpression(final RuleEnvironment G, final RuleApplicationTrace _trace_, final ParenExpression e) throws RuleFailedException {
// output parameter
TypeRef T = null;
/* G |- e.expression: T */
Expression _expression = e.getExpression();
Result<TypeRef> result = typeInternal(G, _trace_, _expression);
checkAssignableTo(result.getFirst(), TypeRef.class);
T = (TypeRef) result.getFirst();
return new Result<TypeRef>(T);
}
use of org.eclipse.xsemantics.runtime.Result in project n4js by eclipse.
the class InternalTypeSystem method applyRuleLowerBoundThisTypeRef.
protected Result<TypeRef> applyRuleLowerBoundThisTypeRef(final RuleEnvironment G, final RuleApplicationTrace _trace_, final BoundThisTypeRef boundThisTypeRef) throws RuleFailedException {
// output parameter
TypeRef T = null;
T = RuleEnvironmentExtensions.undefinedTypeRef(G);
TypeUtils.copyTypeModifiers(T, boundThisTypeRef);
return new Result<TypeRef>(T);
}
use of org.eclipse.xsemantics.runtime.Result in project n4js by eclipse.
the class InternalTypeSystem method applyRuleTypeArgument.
protected Result<TypeRef> applyRuleTypeArgument(final RuleEnvironment G, final RuleApplicationTrace _trace_, final Argument arg) throws RuleFailedException {
// output parameter
TypeRef T = null;
/* G |- arg.expression: T */
Expression _expression = arg.getExpression();
Result<TypeRef> result = typeInternal(G, _trace_, _expression);
checkAssignableTo(result.getFirst(), TypeRef.class);
T = (TypeRef) result.getFirst();
return new Result<TypeRef>(T);
}
use of org.eclipse.xsemantics.runtime.Result in project n4js by eclipse.
the class InternalTypeSystem method applyRuleSubstTypeVariablesThisTypeRefStructural.
protected Result<TypeArgument> applyRuleSubstTypeVariablesThisTypeRefStructural(final RuleEnvironment G, final RuleApplicationTrace _trace_, final ThisTypeRefStructural thisTypeRef) throws RuleFailedException {
// output parameter
ThisTypeRef T = null;
/* { val BoundThisTypeRef boundRefFromEnv = G.getThisType() as BoundThisTypeRef; val boundRef = TypeUtils.createBoundThisTypeRefStructural(boundRefFromEnv.actualThisTypeRef, thisTypeRef); TypeUtils.copyTypeModifiers(boundRef, thisTypeRef); T = boundRef; } or { T = thisTypeRef } */
{
RuleFailedException previousFailure = null;
try {
TypeRef _thisType = RuleEnvironmentExtensions.getThisType(G);
final BoundThisTypeRef boundRefFromEnv = ((BoundThisTypeRef) _thisType);
final BoundThisTypeRef boundRef = TypeUtils.createBoundThisTypeRefStructural(boundRefFromEnv.getActualThisTypeRef(), thisTypeRef);
TypeUtils.copyTypeModifiers(boundRef, thisTypeRef);
T = boundRef;
} catch (Exception e) {
previousFailure = extractRuleFailedException(e);
T = thisTypeRef;
}
}
return new Result<TypeArgument>(T);
}
Aggregations