package jetbrains.mps.baseLanguage.money.typesystem;
/*Generated by MPS */
import jetbrains.mps.lang.typesystem.runtime.BaseHelginsDescriptor;
import jetbrains.mps.lang.typesystem.runtime.InferenceRule_Runtime;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import jetbrains.mps.lang.typesystem.runtime.OverloadedOperationsTypesProvider;
import org.jetbrains.mps.openapi.language.SAbstractConcept;
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.errors.IRuleConflictWarningProducer;
import org.jetbrains.mps.openapi.persistence.PersistenceFacade;
import jetbrains.mps.smodel.SModelUtil_new;
public class TypesystemDescriptor extends BaseHelginsDescriptor {
public TypesystemDescriptor() {
{
InferenceRule_Runtime inferenceRule = new typeof_MoneyCreator_InferenceRule();
this.myInferenceRules.add(inferenceRule);
}
{
InferenceRule_Runtime inferenceRule = new typeof_MoneyGetAmountMethodCall_InferenceRule();
this.myInferenceRules.add(inferenceRule);
}
{
InferenceRule_Runtime inferenceRule = new typeof_MoneyGetCurrencyMethodCall_InferenceRule();
this.myInferenceRules.add(inferenceRule);
}
{
InferenceRule_Runtime inferenceRule = new typeof_MoneyIsZeroMethodCall_InferenceRule();
this.myInferenceRules.add(inferenceRule);
}
{
InferenceRule_Runtime inferenceRule = new typeof_MoneyLiteral_InferenceRule();
this.myInferenceRules.add(inferenceRule);
}
this.myOverloadedOperationsTypesProviders.add(new TypesystemDescriptor.CustomOverloadedOperationsTypesProvider_a(MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc67c7fbL, "jetbrains.mps.baseLanguage.structure.PlusExpression")));
this.myOverloadedOperationsTypesProviders.add(new TypesystemDescriptor.CustomOverloadedOperationsTypesProvider_b(MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc67c7f5L, "jetbrains.mps.baseLanguage.structure.MinusExpression")));
this.myOverloadedOperationsTypesProviders.add(new TypesystemDescriptor.CustomOverloadedOperationsTypesProvider_c(MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xff2bbc13daL, "jetbrains.mps.baseLanguage.structure.DivExpression")));
this.myOverloadedOperationsTypesProviders.add(new TypesystemDescriptor.CustomOverloadedOperationsTypesProvider_d(MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xfe476b758fL, "jetbrains.mps.baseLanguage.structure.MulExpression")));
this.myOverloadedOperationsTypesProviders.add(new TypesystemDescriptor.CustomOverloadedOperationsTypesProvider_e(MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xfe476b758fL, "jetbrains.mps.baseLanguage.structure.MulExpression")));
}
public static class CustomOverloadedOperationsTypesProvider_a extends OverloadedOperationsTypesProvider {
public CustomOverloadedOperationsTypesProvider_a(SAbstractConcept concept) {
this.myLeftOperandType = _quotation_createNode_3ist9o_a0a0a1();
this.myRightOperandType = _quotation_createNode_3ist9o_a0b0a1();
this.myOperationConcept = concept;
this.myLeftTypeIsExact = true;
this.myRightTypeIsExact = true;
this.myRightIsStrong = false;
this.myLeftIsStrong = false;
this.myRuleModelId = "r:00000000-0000-4000-0000-011c895903f6(jetbrains.mps.baseLanguage.money.typesystem)";
this.myRuleNodeId = "1239364220843";
}
public SNode getOperationType(SNode operation, SNode leftOperandType, SNode rightOperandType) {
return _quotation_createNode_3ist9o_a0a1b();
}
@Override
public void reportConflict(IRuleConflictWarningProducer producer) {
producer.produceWarning(myRuleModelId, myRuleNodeId);
}
private static SNode _quotation_createNode_3ist9o_a0a0a1() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf43135f9b8334685L, 0x8d26ffb6c8215f72L, "jetbrains.mps.baseLanguage.money"), 0x1144b05194dL, "MoneyType"), null, null, false);
return quotedNode_1;
}
private static SNode _quotation_createNode_3ist9o_a0b0a1() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf43135f9b8334685L, 0x8d26ffb6c8215f72L, "jetbrains.mps.baseLanguage.money"), 0x1144b05194dL, "MoneyType"), null, null, false);
return quotedNode_1;
}
private static SNode _quotation_createNode_3ist9o_a0a1b() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf43135f9b8334685L, 0x8d26ffb6c8215f72L, "jetbrains.mps.baseLanguage.money"), 0x1144b05194dL, "MoneyType"), null, null, false);
return quotedNode_1;
}
}
public static class CustomOverloadedOperationsTypesProvider_b extends OverloadedOperationsTypesProvider {
public CustomOverloadedOperationsTypesProvider_b(SAbstractConcept concept) {
this.myLeftOperandType = _quotation_createNode_3ist9o_a0a0a2();
this.myRightOperandType = _quotation_createNode_3ist9o_a0b0a2();
this.myOperationConcept = concept;
this.myLeftTypeIsExact = true;
this.myRightTypeIsExact = true;
this.myRightIsStrong = false;
this.myLeftIsStrong = false;
this.myRuleModelId = "r:00000000-0000-4000-0000-011c895903f6(jetbrains.mps.baseLanguage.money.typesystem)";
this.myRuleNodeId = "1239364305878";
}
public SNode getOperationType(SNode operation, SNode leftOperandType, SNode rightOperandType) {
return _quotation_createNode_3ist9o_a0a1c();
}
@Override
public void reportConflict(IRuleConflictWarningProducer producer) {
producer.produceWarning(myRuleModelId, myRuleNodeId);
}
private static SNode _quotation_createNode_3ist9o_a0a0a2() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf43135f9b8334685L, 0x8d26ffb6c8215f72L, "jetbrains.mps.baseLanguage.money"), 0x1144b05194dL, "MoneyType"), null, null, false);
return quotedNode_1;
}
private static SNode _quotation_createNode_3ist9o_a0b0a2() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf43135f9b8334685L, 0x8d26ffb6c8215f72L, "jetbrains.mps.baseLanguage.money"), 0x1144b05194dL, "MoneyType"), null, null, false);
return quotedNode_1;
}
private static SNode _quotation_createNode_3ist9o_a0a1c() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf43135f9b8334685L, 0x8d26ffb6c8215f72L, "jetbrains.mps.baseLanguage.money"), 0x1144b05194dL, "MoneyType"), null, null, false);
return quotedNode_1;
}
}
public static class CustomOverloadedOperationsTypesProvider_c extends OverloadedOperationsTypesProvider {
public CustomOverloadedOperationsTypesProvider_c(SAbstractConcept concept) {
this.myLeftOperandType = _quotation_createNode_3ist9o_a0a0a3();
this.myRightOperandType = _quotation_createNode_3ist9o_a0b0a3();
this.myOperationConcept = concept;
this.myLeftTypeIsExact = true;
this.myRightTypeIsExact = true;
this.myRightIsStrong = false;
this.myLeftIsStrong = false;
this.myRuleModelId = "r:00000000-0000-4000-0000-011c895903f6(jetbrains.mps.baseLanguage.money.typesystem)";
this.myRuleNodeId = "1239364336249";
}
public SNode getOperationType(SNode operation, SNode leftOperandType, SNode rightOperandType) {
return _quotation_createNode_3ist9o_a0a1d();
}
@Override
public void reportConflict(IRuleConflictWarningProducer producer) {
producer.produceWarning(myRuleModelId, myRuleNodeId);
}
private static SNode _quotation_createNode_3ist9o_a0a0a3() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf43135f9b8334685L, 0x8d26ffb6c8215f72L, "jetbrains.mps.baseLanguage.money"), 0x1144b05194dL, "MoneyType"), null, null, false);
return quotedNode_1;
}
private static SNode _quotation_createNode_3ist9o_a0b0a3() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf940d22479L, "IntegerType"), null, null, false);
return quotedNode_1;
}
private static SNode _quotation_createNode_3ist9o_a0a1d() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf43135f9b8334685L, 0x8d26ffb6c8215f72L, "jetbrains.mps.baseLanguage.money"), 0x1144b05194dL, "MoneyType"), null, null, false);
return quotedNode_1;
}
}
public static class CustomOverloadedOperationsTypesProvider_d extends OverloadedOperationsTypesProvider {
public CustomOverloadedOperationsTypesProvider_d(SAbstractConcept concept) {
this.myLeftOperandType = _quotation_createNode_3ist9o_a0a0a4();
this.myRightOperandType = _quotation_createNode_3ist9o_a0b0a4();
this.myOperationConcept = concept;
this.myLeftTypeIsExact = true;
this.myRightTypeIsExact = true;
this.myRightIsStrong = false;
this.myLeftIsStrong = false;
this.myRuleModelId = "r:00000000-0000-4000-0000-011c895903f6(jetbrains.mps.baseLanguage.money.typesystem)";
this.myRuleNodeId = "1239364372740";
}
public SNode getOperationType(SNode operation, SNode leftOperandType, SNode rightOperandType) {
return _quotation_createNode_3ist9o_a0a1e();
}
@Override
public void reportConflict(IRuleConflictWarningProducer producer) {
producer.produceWarning(myRuleModelId, myRuleNodeId);
}
private static SNode _quotation_createNode_3ist9o_a0a0a4() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf43135f9b8334685L, 0x8d26ffb6c8215f72L, "jetbrains.mps.baseLanguage.money"), 0x1144b05194dL, "MoneyType"), null, null, false);
return quotedNode_1;
}
private static SNode _quotation_createNode_3ist9o_a0b0a4() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf940d22479L, "IntegerType"), null, null, false);
return quotedNode_1;
}
private static SNode _quotation_createNode_3ist9o_a0a1e() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf43135f9b8334685L, 0x8d26ffb6c8215f72L, "jetbrains.mps.baseLanguage.money"), 0x1144b05194dL, "MoneyType"), null, null, false);
return quotedNode_1;
}
}
public static class CustomOverloadedOperationsTypesProvider_e extends OverloadedOperationsTypesProvider {
public CustomOverloadedOperationsTypesProvider_e(SAbstractConcept concept) {
this.myLeftOperandType = _quotation_createNode_3ist9o_a0a0a5();
this.myRightOperandType = _quotation_createNode_3ist9o_a0b0a5();
this.myOperationConcept = concept;
this.myLeftTypeIsExact = true;
this.myRightTypeIsExact = true;
this.myRightIsStrong = false;
this.myLeftIsStrong = false;
this.myRuleModelId = "r:00000000-0000-4000-0000-011c895903f6(jetbrains.mps.baseLanguage.money.typesystem)";
this.myRuleNodeId = "1239364383449";
}
public SNode getOperationType(SNode operation, SNode leftOperandType, SNode rightOperandType) {
return _quotation_createNode_3ist9o_a0a1f();
}
@Override
public void reportConflict(IRuleConflictWarningProducer producer) {
producer.produceWarning(myRuleModelId, myRuleNodeId);
}
private static SNode _quotation_createNode_3ist9o_a0a0a5() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf940d22479L, "IntegerType"), null, null, false);
return quotedNode_1;
}
private static SNode _quotation_createNode_3ist9o_a0b0a5() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf43135f9b8334685L, 0x8d26ffb6c8215f72L, "jetbrains.mps.baseLanguage.money"), 0x1144b05194dL, "MoneyType"), null, null, false);
return quotedNode_1;
}
private static SNode _quotation_createNode_3ist9o_a0a1f() {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode quotedNode_1 = null;
quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf43135f9b8334685L, 0x8d26ffb6c8215f72L, "jetbrains.mps.baseLanguage.money"), 0x1144b05194dL, "MoneyType"), null, null, false);
return quotedNode_1;
}
}
}