package it.xsemantics.example.fj.typesystem.fj.rules; import it.xtypes.runtime.*; public class TMethodOverrideTypeRule extends FJTypeSystemRule { protected Variable<it.xsemantics.example.fj.fj.Method> var_m1 = new Variable<it.xsemantics.example.fj.fj.Method>( createEClassifierType(basicPackage.getMethod())); protected Variable<it.xsemantics.example.fj.fj.Method> var_m2 = new Variable<it.xsemantics.example.fj.fj.Method>( createEClassifierType(basicPackage.getMethod())); protected TypingJudgmentEnvironment env_G = new TypingJudgmentEnvironment(); public TMethodOverrideTypeRule() { this("TMethodOverride", "|-", "~"); } public TMethodOverrideTypeRule(String ruleName, String typeJudgmentSymbol, String typeStatementRelation) { super(ruleName, typeJudgmentSymbol, typeStatementRelation); } @Override public Variable<it.xsemantics.example.fj.fj.Method> getLeft() { return var_m1; } @Override public Variable<it.xsemantics.example.fj.fj.Method> getRight() { return var_m2; } @Override public TypingJudgmentEnvironment getEnvironment() { return env_G; } @Override public void setEnvironment(TypingJudgmentEnvironment environment) { if (environment != null) env_G = environment; } @Override public RuntimeRule newInstance() { return new TMethodOverrideTypeRule("TMethodOverride", "|-", "~"); } @Override public void applyImpl() throws RuleFailedException { applyRule(env_G, "|-", "==", var_m1.getValue().getParams(), var_m2 .getValue().getParams()); applyRule(env_G, "|-", "==", var_m1.getValue().getType(), var_m2 .getValue().getType()); // final check for variable initialization } }