use of org.eclipse.n4js.ts.typeRefs.ParameterizedTypeRef in project n4js by eclipse.
the class InternalTypeSystem method applyRuleExpectedTypeInRelationalExpression.
protected Result<TypeRef> applyRuleExpectedTypeInRelationalExpression(final RuleEnvironment G, final RuleApplicationTrace _trace_, final RelationalExpression e, final Expression expression) throws RuleFailedException {
// output parameter
TypeRef T = null;
RelationalOperator _op = e.getOp();
if (_op != null) {
switch(_op) {
case INSTANCEOF:
Expression _rhs = e.getRhs();
boolean _tripleEquals = (expression == _rhs);
if (_tripleEquals) {
T = TypeUtils.createNonSimplifiedUnionType(RuleEnvironmentExtensions.functionTypeRef(G), TypeUtils.createTypeTypeRef(RuleEnvironmentExtensions.objectTypeRef(G), false), TypeUtils.createTypeTypeRef(RuleEnvironmentExtensions.n4EnumTypeRef(G), false));
} else {
T = RuleEnvironmentExtensions.anyTypeRef(G);
}
break;
case IN:
Expression _rhs_1 = e.getRhs();
boolean _tripleEquals_1 = (expression == _rhs_1);
if (_tripleEquals_1) {
T = RuleEnvironmentExtensions.objectTypeRef(G);
} else {
boolean _isTypeAware = this.jsVariantHelper.isTypeAware(e);
if (_isTypeAware) {
T = TypeUtils.createNonSimplifiedUnionType(RuleEnvironmentExtensions.numberTypeRef(G), RuleEnvironmentExtensions.stringTypeRef(G));
} else {
T = RuleEnvironmentExtensions.anyTypeRef(G);
}
}
break;
default:
boolean _isTypeAware_1 = this.jsVariantHelper.isTypeAware(e);
if (_isTypeAware_1) {
final UnionTypeExpression primsTR = TypeUtils.createNonSimplifiedUnionType(RuleEnvironmentExtensions.numberTypeRef(G), RuleEnvironmentExtensions.stringTypeRef(G), RuleEnvironmentExtensions.booleanTypeRef(G));
Expression _xifexpression = null;
Expression _lhs = e.getLhs();
boolean _tripleEquals_2 = (expression == _lhs);
if (_tripleEquals_2) {
_xifexpression = e.getRhs();
} else {
_xifexpression = e.getLhs();
}
final Expression otherSide = _xifexpression;
/* G |- otherSide : var TypeRef otherSideTR */
TypeRef otherSideTR = null;
Result<TypeRef> result = typeInternal(G, _trace_, otherSide);
checkAssignableTo(result.getFirst(), TypeRef.class);
otherSideTR = (TypeRef) result.getFirst();
boolean _and = false;
/* G |- otherSideTR <: primsTR */
boolean _ruleinvocation = subtypeSucceeded(G, _trace_, otherSideTR, primsTR);
if (!_ruleinvocation) {
_and = false;
} else {
/* G |- otherSideTR <: G.nullTypeRef */
ParameterizedTypeRef _nullTypeRef = RuleEnvironmentExtensions.nullTypeRef(G);
boolean _ruleinvocation_1 = subtypeSucceeded(G, _trace_, otherSideTR, _nullTypeRef);
boolean _not = (!_ruleinvocation_1);
_and = _not;
}
if (_and) {
T = otherSideTR;
} else {
T = primsTR;
}
} else {
T = RuleEnvironmentExtensions.anyTypeRef(G);
}
break;
}
} else {
boolean _isTypeAware_1 = this.jsVariantHelper.isTypeAware(e);
if (_isTypeAware_1) {
final UnionTypeExpression primsTR = TypeUtils.createNonSimplifiedUnionType(RuleEnvironmentExtensions.numberTypeRef(G), RuleEnvironmentExtensions.stringTypeRef(G), RuleEnvironmentExtensions.booleanTypeRef(G));
Expression _xifexpression = null;
Expression _lhs = e.getLhs();
boolean _tripleEquals_2 = (expression == _lhs);
if (_tripleEquals_2) {
_xifexpression = e.getRhs();
} else {
_xifexpression = e.getLhs();
}
final Expression otherSide = _xifexpression;
/* G |- otherSide : var TypeRef otherSideTR */
TypeRef otherSideTR = null;
Result<TypeRef> result = typeInternal(G, _trace_, otherSide);
checkAssignableTo(result.getFirst(), TypeRef.class);
otherSideTR = (TypeRef) result.getFirst();
boolean _and = false;
/* G |- otherSideTR <: primsTR */
boolean _ruleinvocation = subtypeSucceeded(G, _trace_, otherSideTR, primsTR);
if (!_ruleinvocation) {
_and = false;
} else {
/* G |- otherSideTR <: G.nullTypeRef */
ParameterizedTypeRef _nullTypeRef = RuleEnvironmentExtensions.nullTypeRef(G);
boolean _ruleinvocation_1 = subtypeSucceeded(G, _trace_, otherSideTR, _nullTypeRef);
boolean _not = (!_ruleinvocation_1);
_and = _not;
}
if (_and) {
T = otherSideTR;
} else {
T = primsTR;
}
} else {
T = RuleEnvironmentExtensions.anyTypeRef(G);
}
}
return new Result<TypeRef>(T);
}
use of org.eclipse.n4js.ts.typeRefs.ParameterizedTypeRef in project n4js by eclipse.
the class InternalTypeSystem method typeImpl.
protected Result<TypeRef> typeImpl(final RuleEnvironment G, final RuleApplicationTrace _trace_, final PostfixExpression e) throws RuleFailedException {
try {
final RuleApplicationTrace _subtrace_ = newTrace(_trace_);
final Result<TypeRef> _result_ = applyRuleTypePostfixExpression(G, _subtrace_, e);
addToTrace(_trace_, new Provider<Object>() {
public Object get() {
return ruleName("typePostfixExpression") + stringRepForEnv(G) + " |- " + stringRep(e) + " : " + stringRep(_result_.getFirst());
}
});
addAsSubtrace(_trace_, _subtrace_);
return _result_;
} catch (Exception e_applyRuleTypePostfixExpression) {
typeThrowException(ruleName("typePostfixExpression") + stringRepForEnv(G) + " |- " + stringRep(e) + " : " + "ParameterizedTypeRef", TYPEPOSTFIXEXPRESSION, e_applyRuleTypePostfixExpression, e, new ErrorInformation[] { new ErrorInformation(e) });
return null;
}
}
use of org.eclipse.n4js.ts.typeRefs.ParameterizedTypeRef in project n4js by eclipse.
the class InternalTypeSystem method typeImpl.
protected Result<TypeRef> typeImpl(final RuleEnvironment G, final RuleApplicationTrace _trace_, final BinaryBitwiseExpression e) throws RuleFailedException {
try {
final RuleApplicationTrace _subtrace_ = newTrace(_trace_);
final Result<TypeRef> _result_ = applyRuleTypeBinaryBitwiseExpression(G, _subtrace_, e);
addToTrace(_trace_, new Provider<Object>() {
public Object get() {
return ruleName("typeBinaryBitwiseExpression") + stringRepForEnv(G) + " |- " + stringRep(e) + " : " + stringRep(_result_.getFirst());
}
});
addAsSubtrace(_trace_, _subtrace_);
return _result_;
} catch (Exception e_applyRuleTypeBinaryBitwiseExpression) {
typeThrowException(ruleName("typeBinaryBitwiseExpression") + stringRepForEnv(G) + " |- " + stringRep(e) + " : " + "ParameterizedTypeRef", TYPEBINARYBITWISEEXPRESSION, e_applyRuleTypeBinaryBitwiseExpression, e, new ErrorInformation[] { new ErrorInformation(e) });
return null;
}
}
use of org.eclipse.n4js.ts.typeRefs.ParameterizedTypeRef in project n4js by eclipse.
the class InternalTypeSystem method typeImpl.
protected Result<TypeRef> typeImpl(final RuleEnvironment G, final RuleApplicationTrace _trace_, final NullLiteral l) throws RuleFailedException {
try {
final RuleApplicationTrace _subtrace_ = newTrace(_trace_);
final Result<TypeRef> _result_ = applyRuleTypeNullLiteral(G, _subtrace_, l);
addToTrace(_trace_, new Provider<Object>() {
public Object get() {
return ruleName("typeNullLiteral") + stringRepForEnv(G) + " |- " + stringRep(l) + " : " + stringRep(_result_.getFirst());
}
});
addAsSubtrace(_trace_, _subtrace_);
return _result_;
} catch (Exception e_applyRuleTypeNullLiteral) {
typeThrowException(ruleName("typeNullLiteral") + stringRepForEnv(G) + " |- " + stringRep(l) + " : " + "ParameterizedTypeRef", TYPENULLLITERAL, e_applyRuleTypeNullLiteral, l, new ErrorInformation[] { new ErrorInformation(l) });
return null;
}
}
use of org.eclipse.n4js.ts.typeRefs.ParameterizedTypeRef in project n4js by eclipse.
the class InternalTypeSystem method typeImpl.
protected Result<TypeRef> typeImpl(final RuleEnvironment G, final RuleApplicationTrace _trace_, final RegularExpressionLiteral l) throws RuleFailedException {
try {
final RuleApplicationTrace _subtrace_ = newTrace(_trace_);
final Result<TypeRef> _result_ = applyRuleTypeRegExpLiteral(G, _subtrace_, l);
addToTrace(_trace_, new Provider<Object>() {
public Object get() {
return ruleName("typeRegExpLiteral") + stringRepForEnv(G) + " |- " + stringRep(l) + " : " + stringRep(_result_.getFirst());
}
});
addAsSubtrace(_trace_, _subtrace_);
return _result_;
} catch (Exception e_applyRuleTypeRegExpLiteral) {
typeThrowException(ruleName("typeRegExpLiteral") + stringRepForEnv(G) + " |- " + stringRep(l) + " : " + "ParameterizedTypeRef", TYPEREGEXPLITERAL, e_applyRuleTypeRegExpLiteral, l, new ErrorInformation[] { new ErrorInformation(l) });
return null;
}
}
Aggregations