Anwenden der Regeln endet automatisch

This commit is contained in:
sebastian 2017-05-03 09:51:02 +02:00
parent 062bc24f90
commit 631614ec69
11 changed files with 814 additions and 399 deletions

728
.idea/workspace.xml generated
View File

@ -2,13 +2,17 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="5cf612a7-261d-49e6-bf7a-db4b05e41151" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/ausgabe/Help.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/algo/TI.java" afterPath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/algo/TI.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintAbstract.java" afterPath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintAbstract.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintShouldEqual.java" afterPath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintShouldEqual.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintSubType.java" afterPath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintSubType.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/InterfaceForConstraint.java" afterPath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/InterfaceForConstraint.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/solve/Ruler.java" afterPath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/solve/Ruler.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/solve/Rules.java" afterPath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/solve/Rules.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarAbstract.java" afterPath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarAbstract.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarFactory.java" afterPath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarFactory.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarInterface.java" afterPath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarInterface.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarType.java" afterPath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarType.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/strucTypes5/NewOperatorTest2.java" afterPath="$PROJECT_DIR$/test/strucTypes5/NewOperatorTest2.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarRefType.java" afterPath="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarRefType.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/strucTypes5/SolveTest.java" afterPath="$PROJECT_DIR$/test/strucTypes5/SolveTest.java" />
</list>
<ignored path="$PROJECT_DIR$/bin/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
@ -24,21 +28,11 @@
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="SolveTest.java" pinned="false" current-in-tab="false">
<file leaf-file-name="SolveTest.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/test/strucTypes5/SolveTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-165">
<caret line="7" column="22" lean-forward="true" selection-start-line="7" selection-start-column="22" selection-end-line="7" selection-end-column="22" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SolveTest_Dev.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/test/strucTypes5/SolveTest_Dev.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="336">
<caret line="294" column="44" lean-forward="false" selection-start-line="294" selection-start-column="44" selection-end-line="294" selection-end-column="44" />
<state relative-caret-position="-259">
<caret line="133" column="0" lean-forward="true" selection-start-line="133" selection-start-column="0" selection-end-line="133" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
@ -46,101 +40,85 @@
</provider>
</entry>
</file>
<file leaf-file-name="Rules.java" pinned="false" current-in-tab="true">
<file leaf-file-name="TypeVarRefType.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarRefType.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="423">
<caret line="48" column="9" lean-forward="false" selection-start-line="48" selection-start-column="9" selection-end-line="48" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Class2String.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/ausgabe/Class2String.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1605">
<caret line="17" column="13" lean-forward="false" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Help.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/ausgabe/Help.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="15" column="45" lean-forward="false" selection-start-line="15" selection-start-column="45" selection-end-line="15" selection-end-column="45" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Ruler.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/solve/Ruler.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="56" column="37" lean-forward="true" selection-start-line="56" selection-start-column="37" selection-end-line="56" selection-end-column="37" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Rules.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/solve/Rules.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="319">
<caret line="371" column="0" lean-forward="true" selection-start-line="371" selection-start-column="0" selection-end-line="371" selection-end-column="0" />
<state relative-caret-position="136">
<caret line="402" column="34" lean-forward="false" selection-start-line="402" selection-start-column="34" selection-end-line="402" selection-end-column="34" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#13279#13280#0" expanded="true" />
<element signature="e#13322#13323#0" expanded="true" />
<element signature="e#13539#13540#0" expanded="true" />
<element signature="e#13575#13576#0" expanded="true" />
<element signature="e#13655#13656#0" expanded="true" />
<element signature="e#13705#13706#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="TypeVarType.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarType.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="319">
<caret line="46" column="5" lean-forward="false" selection-start-line="46" selection-start-column="5" selection-end-line="46" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ConstraintSubType.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintSubType.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="334">
<caret line="32" column="0" lean-forward="false" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" />
<state relative-caret-position="426">
<caret line="39" column="0" lean-forward="false" selection-start-line="39" selection-start-column="0" selection-end-line="39" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#871#872#0" expanded="true" />
<element signature="e#901#902#0" expanded="true" />
<element signature="e#1071#1072#0" expanded="true" />
<element signature="e#1384#1385#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ConstraintInterface.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintInterface.java">
<file leaf-file-name="InterfaceForConstraint.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/InterfaceForConstraint.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-551">
<caret line="0" column="0" lean-forward="true" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<state relative-caret-position="201">
<caret line="25" column="0" lean-forward="false" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
<folding>
<element signature="e#490#491#0" expanded="true" />
<element signature="e#520#521#0" expanded="true" />
<element signature="e#575#576#0" expanded="true" />
<element signature="e#608#609#0" expanded="true" />
<element signature="e#653#654#0" expanded="true" />
<element signature="e#685#686#0" expanded="true" />
<element signature="e#744#745#0" expanded="true" />
<element signature="e#781#782#0" expanded="true" />
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="TypeVarInterface.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarInterface.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="323">
<caret line="53" column="9" lean-forward="true" selection-start-line="53" selection-start-column="9" selection-end-line="53" selection-end-column="9" />
<folding>
<element signature="e#1630#1631#0" expanded="true" />
<element signature="e#1715#1716#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="TypeVarAbstract.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarAbstract.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="15" column="0" lean-forward="true" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="TypeVarFactory.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="24" column="87" lean-forward="true" selection-start-line="24" selection-start-column="87" selection-end-line="24" selection-end-column="87" />
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
@ -153,25 +131,6 @@
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>methodCa</find>
<find>getClass</find>
<find>ConstraintM</find>
<find>Fehler</find>
<find>return</find>
<find>generaTe</find>
<find>TypeVar</find>
<find>gene</find>
<find>neue Klas</find>
<find>typevarStor</find>
<find>neu</find>
<find>Not im</find>
<find>System</find>
<find>out</find>
<find>Const</find>
<find>Constraints</find>
<find>remaining</find>
<find>remain</find>
<find>neue REs</find>
<find>neue Res</find>
<find>construct</find>
<find>***</find>
@ -182,7 +141,26 @@
<find>20</find>
<find>new</find>
<find>getNeu</find>
<find>subst</find>
<find>substi</find>
<find>substitu</find>
<find>reflect</find>
<find>Regel Re</find>
<find>Replac</find>
<find>SWAP</find>
<find>TVar_28</find>
<find>TVar_25</find>
<find>Reflec</find>
<find>Refle</find>
<find>remove</find>
<find>Remove</find>
<find>reflec</find>
<find>X</find>
<find>adapt</find>
<find>XXX</find>
<find>Re</find>
<find>adapt2</find>
<find>erase</find>
</findStrings>
</component>
<component name="Git.Settings">
@ -196,15 +174,10 @@
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/test/strucTypes5/ConstructTest.jav" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/factoryForSyntaxtree/FactoryForElementes.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/GenericNames.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVar.java" />
<option value="$PROJECT_DIR$/test/strucTypes5/NewOperatorTest.jav" />
<option value="$PROJECT_DIR$/test/strucTypes5/ConstructTest.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/InterfaceTemplates/MethodInterface.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes4/syntaxtree/MethodInterface.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/InterfaceForConstraint.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/ResultTuple.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/interfaceTemplates/FieldInterface.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/interfaceTemplates/MethodInterface.java" />
@ -226,27 +199,32 @@
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/ausgabe/Class2String.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/assumptions/AssumptionMap.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintSubTypeGeneric.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarRefType.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/algo/Construct.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintSubType.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/algo/ConstructInterfaceTemplates.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/assumptions/ChangeTypeVars.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarStore.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/algo/TypeExpr.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintShouldEqual.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintSubstitution.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/MappingAltNeu.java" />
<option value="$PROJECT_DIR$/test/strucTypes5/NewOperatorTest2.java" />
<option value="$PROJECT_DIR$/test/strucTypes5/SolveTest.jav" />
<option value="$PROJECT_DIR$/test/strucTypes5/SolveTest.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/algo/TI.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarFactory.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintInterface.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarType.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarInterface.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarAbstract.java" />
<option value="$PROJECT_DIR$/test/strucTypes5/SolveTest_Dev.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/algo/TI.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintAbstract.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintShouldEqual.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintSubType.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/InterfaceForConstraint.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/ausgabe/HelpListAusgabe.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/ausgabe/Help.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarRefType.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/solve/Ruler.java" />
<option value="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/solve/Rules.java" />
<option value="$PROJECT_DIR$/test/strucTypes5/SolveTest.java" />
</list>
</option>
</component>
@ -491,6 +469,32 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="JavaCompilerCore" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="JavaCompilerCore" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="dhbwstuttgart" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="strucTypes5" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ausgabe" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="JavaCompilerCore" />
@ -541,7 +545,7 @@
<recent name="$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5" />
</key>
</component>
<component name="RunManager" selected="JUnit.SolveTest_Dev.run">
<component name="RunManager" selected="JUnit.SolveTest.run">
<configuration default="false" name="NewOperatorTest2.run" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
@ -594,32 +598,6 @@
<patterns />
<method />
</configuration>
<configuration default="false" name="TypeExprTest.run" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="strucTypes5.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="JavaCompilerCore" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="strucTypes5" />
<option name="MAIN_CLASS_NAME" value="strucTypes5.TypeExprTest" />
<option name="METHOD_NAME" value="run" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
<method />
</configuration>
<configuration default="false" name="NewOperatorTest3" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
@ -672,6 +650,32 @@
<patterns />
<method />
</configuration>
<configuration default="false" name="SolveTest.run" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="strucTypes5.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="JavaCompilerCore" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="strucTypes5" />
<option name="MAIN_CLASS_NAME" value="strucTypes5.SolveTest" />
<option name="METHOD_NAME" value="run" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
<method />
</configuration>
<configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
<module name="" />
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
@ -1055,17 +1059,17 @@
<list size="5">
<item index="0" class="java.lang.String" itemvalue="JUnit.NewOperatorTest2.run" />
<item index="1" class="java.lang.String" itemvalue="JUnit.NewOperatorTest3.run" />
<item index="2" class="java.lang.String" itemvalue="JUnit.TypeExprTest.run" />
<item index="3" class="java.lang.String" itemvalue="JUnit.NewOperatorTest3" />
<item index="4" class="java.lang.String" itemvalue="JUnit.SolveTest_Dev.run" />
<item index="2" class="java.lang.String" itemvalue="JUnit.NewOperatorTest3" />
<item index="3" class="java.lang.String" itemvalue="JUnit.SolveTest_Dev.run" />
<item index="4" class="java.lang.String" itemvalue="JUnit.SolveTest.run" />
</list>
<recent_temporary>
<list size="5">
<item index="0" class="java.lang.String" itemvalue="JUnit.SolveTest_Dev.run" />
<item index="1" class="java.lang.String" itemvalue="JUnit.NewOperatorTest2.run" />
<item index="2" class="java.lang.String" itemvalue="JUnit.NewOperatorTest3" />
<item index="3" class="java.lang.String" itemvalue="JUnit.NewOperatorTest3.run" />
<item index="4" class="java.lang.String" itemvalue="JUnit.TypeExprTest.run" />
<item index="0" class="java.lang.String" itemvalue="JUnit.SolveTest.run" />
<item index="1" class="java.lang.String" itemvalue="JUnit.SolveTest_Dev.run" />
<item index="2" class="java.lang.String" itemvalue="JUnit.NewOperatorTest2.run" />
<item index="3" class="java.lang.String" itemvalue="JUnit.NewOperatorTest3" />
<item index="4" class="java.lang.String" itemvalue="JUnit.NewOperatorTest3.run" />
</list>
</recent_temporary>
</component>
@ -1083,48 +1087,48 @@
<option name="presentableId" value="Default" />
<updated>1492600650522</updated>
<workItem from="1492600653626" duration="3746000" />
<workItem from="1492623646935" duration="164646000" />
<workItem from="1492623646935" duration="191515000" />
</task>
<servers />
</component>
<component name="TestHistory">
<history-entry file="SolveTest_Dev_run - 2017.05.03 at 00h 47m 31s.xml">
<configuration name="SolveTest_Dev.run" configurationId="JUnit" />
<history-entry file="SolveTest_run - 2017.05.03 at 08h 49m 16s.xml">
<configuration name="SolveTest.run" configurationId="JUnit" />
</history-entry>
<history-entry file="SolveTest_Dev_run - 2017.05.03 at 01h 29m 15s.xml">
<configuration name="SolveTest_Dev.run" configurationId="JUnit" />
<history-entry file="SolveTest_run - 2017.05.03 at 08h 49m 46s.xml">
<configuration name="SolveTest.run" configurationId="JUnit" />
</history-entry>
<history-entry file="SolveTest_Dev_run - 2017.05.03 at 01h 33m 30s.xml">
<configuration name="SolveTest_Dev.run" configurationId="JUnit" />
<history-entry file="SolveTest_run - 2017.05.03 at 08h 53m 38s.xml">
<configuration name="SolveTest.run" configurationId="JUnit" />
</history-entry>
<history-entry file="SolveTest_Dev_run - 2017.05.03 at 01h 35m 48s.xml">
<configuration name="SolveTest_Dev.run" configurationId="JUnit" />
<history-entry file="SolveTest_run - 2017.05.03 at 08h 55m 31s.xml">
<configuration name="SolveTest.run" configurationId="JUnit" />
</history-entry>
<history-entry file="SolveTest_Dev_run - 2017.05.03 at 01h 37m 14s.xml">
<configuration name="SolveTest_Dev.run" configurationId="JUnit" />
<history-entry file="SolveTest_run - 2017.05.03 at 09h 18m 31s.xml">
<configuration name="SolveTest.run" configurationId="JUnit" />
</history-entry>
<history-entry file="SolveTest_Dev_run - 2017.05.03 at 01h 54m 42s.xml">
<configuration name="SolveTest_Dev.run" configurationId="JUnit" />
<history-entry file="SolveTest_run - 2017.05.03 at 09h 18m 58s.xml">
<configuration name="SolveTest.run" configurationId="JUnit" />
</history-entry>
<history-entry file="SolveTest_Dev_run - 2017.05.03 at 01h 58m 40s.xml">
<configuration name="SolveTest_Dev.run" configurationId="JUnit" />
<history-entry file="SolveTest_run - 2017.05.03 at 09h 26m 07s.xml">
<configuration name="SolveTest.run" configurationId="JUnit" />
</history-entry>
<history-entry file="SolveTest_Dev_run - 2017.05.03 at 01h 58m 57s.xml">
<configuration name="SolveTest_Dev.run" configurationId="JUnit" />
<history-entry file="SolveTest_run - 2017.05.03 at 09h 46m 53s.xml">
<configuration name="SolveTest.run" configurationId="JUnit" />
</history-entry>
<history-entry file="SolveTest_Dev_run - 2017.05.03 at 02h 03m 04s.xml">
<configuration name="SolveTest_Dev.run" configurationId="JUnit" />
<history-entry file="SolveTest_run - 2017.05.03 at 09h 47m 59s.xml">
<configuration name="SolveTest.run" configurationId="JUnit" />
</history-entry>
<history-entry file="SolveTest_Dev_run - 2017.05.03 at 02h 04m 50s.xml">
<configuration name="SolveTest_Dev.run" configurationId="JUnit" />
<history-entry file="SolveTest_run - 2017.05.03 at 09h 49m 20s.xml">
<configuration name="SolveTest.run" configurationId="JUnit" />
</history-entry>
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="168392000" />
<option name="totallyTimeSpent" value="195261000" />
</component>
<component name="ToolWindowManager">
<frame x="-2" y="27" width="1442" height="863" extended-state="0" />
<editor active="false" />
<editor active="true" />
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Tool Output" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
@ -1145,10 +1149,10 @@
<window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.35602096" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.4751309" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32984293" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="true" content_ui="tabs" />
@ -1183,7 +1187,7 @@
<window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.35602096" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.4751309" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
@ -1218,8 +1222,14 @@
<properties />
<option name="timeStamp" value="14" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-method">
<url>file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/solve/Rules.java</url>
<line>160</line>
<properties class="de.dhbwstuttgart.strucTypes5.solve.Rules" />
<option name="timeStamp" value="47" />
</line-breakpoint>
</breakpoints>
<option name="time" value="34" />
<option name="time" value="57" />
</breakpoint-manager>
<watches-manager />
</component>
@ -1228,88 +1238,6 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/typeinference/unify/Unifikationsalgorithmus.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="6" column="17" lean-forward="false" selection-start-line="6" selection-start-column="17" selection-end-line="6" selection-end-column="17" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/typeinference/unify/MartelliMontanariUnify.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330">
<caret line="25" column="36" lean-forward="false" selection-start-line="25" selection-start-column="36" selection-end-line="25" selection-end-column="36" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test/strucTypes5/NewOperatorTest.jav">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="195">
<caret line="13" column="0" lean-forward="true" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/typeinference/unify/GuavaSetOperations.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
<caret line="11" column="18" lean-forward="false" selection-start-line="11" selection-start-column="18" selection-end-line="11" selection-end-column="18" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="22" column="66" lean-forward="false" selection-start-line="22" selection-start-column="66" selection-end-line="22" selection-end-column="66" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test/strucTypes5/FieldTest.jav">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="120">
<caret line="8" column="8" lean-forward="true" selection-start-line="8" selection-start-column="8" selection-end-line="8" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/Start.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="5" column="13" lean-forward="false" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/Main.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="5" column="13" lean-forward="false" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test/strucTypes5/AssumptionTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="204">
<caret line="44" column="16" lean-forward="false" selection-start-line="44" selection-start-column="16" selection-end-line="44" selection-end-column="16" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test/strucTypes5/FieldTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="263">
<caret line="30" column="32" lean-forward="false" selection-start-line="30" selection-start-column="32" selection-end-line="30" selection-end-column="32" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/assumptions/AssumptionMethod.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
@ -1412,14 +1340,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/ausgabe/Class2String.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105">
<caret line="17" column="13" lean-forward="false" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVar.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
@ -1470,26 +1390,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintShouldEqual.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="120">
<caret line="8" column="61" lean-forward="false" selection-start-line="8" selection-start-column="61" selection-end-line="8" selection-end-column="61" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#503#504#0" expanded="true" />
<element signature="e#528#529#0" expanded="true" />
<element signature="e#573#574#0" expanded="true" />
<element signature="e#601#602#0" expanded="true" />
<element signature="e#639#640#0" expanded="true" />
<element signature="e#664#665#0" expanded="true" />
<element signature="e#709#710#0" expanded="true" />
<element signature="e#737#738#0" expanded="true" />
<element signature="e#783#784#0" expanded="true" />
<element signature="e#865#866#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test/strucTypes5/NewOperatorTest3.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
@ -1560,16 +1460,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/algo/TI.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="904">
<caret line="115" column="33" lean-forward="false" selection-start-line="115" selection-start-column="33" selection-end-line="115" selection-end-column="33" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/syntaxtree/type/RefType.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-600">
@ -1578,35 +1468,14 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintSubstitution.java">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarType.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105">
<caret line="7" column="13" lean-forward="false" selection-start-line="7" selection-start-column="13" selection-end-line="7" selection-end-column="13" />
<state relative-caret-position="319">
<caret line="46" column="5" lean-forward="false" selection-start-line="46" selection-start-column="5" selection-end-line="46" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/InterfaceForConstraint.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="109">
<caret line="10" column="13" lean-forward="false" selection-start-line="10" selection-start-column="13" selection-end-line="10" selection-end-column="13" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarRefType.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-4">
<caret line="9" column="17" lean-forward="false" selection-start-line="9" selection-start-column="17" selection-end-line="9" selection-end-column="17" />
<folding>
<element signature="e#344#345#0" expanded="true" />
<element signature="e#374#375#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarAbstract.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
@ -1615,6 +1484,14 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="24" column="87" lean-forward="true" selection-start-line="24" selection-start-column="87" selection-end-line="24" selection-end-column="87" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarInterface.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="323">
@ -1643,31 +1520,178 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintSubType.java">
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/algo/TI.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="334">
<caret line="32" column="0" lean-forward="false" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" />
<state relative-caret-position="195">
<caret line="121" column="0" lean-forward="true" selection-start-line="121" selection-start-column="0" selection-end-line="121" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#871#872#0" expanded="true" />
<element signature="e#901#902#0" expanded="true" />
<element signature="e#1071#1072#0" expanded="true" />
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarType.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="319">
<caret line="46" column="5" lean-forward="false" selection-start-line="46" selection-start-column="5" selection-end-line="46" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test/strucTypes5/SolveTest_Dev.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="336">
<caret line="294" column="44" lean-forward="false" selection-start-line="294" selection-start-column="44" selection-end-line="294" selection-end-column="44" />
<state relative-caret-position="231">
<caret line="305" column="17" lean-forward="false" selection-start-line="305" selection-start-column="17" selection-end-line="305" selection-end-column="17" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintSubstitution.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105">
<caret line="7" column="13" lean-forward="false" selection-start-line="7" selection-start-column="13" selection-end-line="7" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="jar://$APPLICATION_HOME_DIR$/lib/junit-4.12.jar!/org/junit/internal/runners/model/ReflectiveCallable.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
<caret line="15" column="0" lean-forward="false" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="jar://$APPLICATION_HOME_DIR$/lib/junit-4.12.jar!/org/junit/runners/BlockJUnit4ClassRunner.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="315">
<caret line="50" column="0" lean-forward="false" selection-start-line="50" selection-start-column="0" selection-end-line="50" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="jar://$APPLICATION_HOME_DIR$/lib/junit-4.12.jar!/org/junit/runner/JUnitCore.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="227">
<caret line="81" column="0" lean-forward="false" selection-start-line="81" selection-start-column="0" selection-end-line="81" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="jar://$APPLICATION_HOME_DIR$/lib/junit-4.12.jar!/org/junit/runners/ParentRunner.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="343">
<caret line="240" column="0" lean-forward="false" selection-start-line="240" selection-start-column="0" selection-end-line="240" selection-end-column="0" />
<folding>
<element signature="e#2137#2138#0" expanded="true" />
<element signature="e#2181#2182#0" expanded="true" />
<element signature="e#5891#6026#0" expanded="true" />
<element signature="e#6025#6026#0" expanded="true" />
<element signature="e#6429#6593#0" expanded="true" />
<element signature="e#6592#6593#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="jar://$APPLICATION_HOME_DIR$/lib/junit-4.12.jar!/org/junit/internal/runners/statements/InvokeMethod.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
<caret line="21" column="0" lean-forward="false" selection-start-line="21" selection-start-column="0" selection-end-line="21" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/ausgabe/Class2String.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1605">
<caret line="17" column="13" lean-forward="false" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintShouldEqual.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="22" column="34" lean-forward="false" selection-start-line="22" selection-start-column="34" selection-end-line="22" selection-end-column="34" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="jar://$APPLICATION_HOME_DIR$/lib/junit-4.12.jar!/org/junit/runners/model/FrameworkMethod.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="283">
<caret line="33" column="0" lean-forward="false" selection-start-line="33" selection-start-column="0" selection-end-line="33" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/ausgabe/Help.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="15" column="45" lean-forward="false" selection-start-line="15" selection-start-column="45" selection-end-line="15" selection-end-column="45" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarRefType.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="423">
<caret line="48" column="9" lean-forward="false" selection-start-line="48" selection-start-column="9" selection-end-line="48" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintAbstract.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="20" column="9" lean-forward="true" selection-start-line="20" selection-start-column="9" selection-end-line="20" selection-end-column="9" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#350#351#0" expanded="true" />
<element signature="e#378#379#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/InterfaceForConstraint.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="201">
<caret line="25" column="0" lean-forward="false" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="jar:///opt/Oracle_Java/jdk1.8.0_102/jre/lib/rt.jar!/sun/reflect/NativeMethodAccessorImpl.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="360">
<caret line="37" column="33" lean-forward="false" selection-start-line="37" selection-start-column="33" selection-end-line="37" selection-end-column="33" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/constraints/ConstraintSubType.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="426">
<caret line="39" column="0" lean-forward="false" selection-start-line="39" selection-start-column="0" selection-end-line="39" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#1384#1385#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/solve/Rules.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="136">
<caret line="402" column="34" lean-forward="false" selection-start-line="402" selection-start-column="34" selection-end-line="402" selection-end-column="34" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/solve/Ruler.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="56" column="37" lean-forward="true" selection-start-line="56" selection-start-column="37" selection-end-line="56" selection-end-column="37" />
<folding>
<element signature="imports" expanded="true" />
</folding>
@ -1676,32 +1700,10 @@
</entry>
<entry file="file://$PROJECT_DIR$/test/strucTypes5/SolveTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-165">
<caret line="7" column="22" lean-forward="true" selection-start-line="7" selection-start-column="22" selection-end-line="7" selection-end-column="22" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/typeVars/TypeVarFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="24" column="87" lean-forward="true" selection-start-line="24" selection-start-column="87" selection-end-line="24" selection-end-column="87" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/de/dhbwstuttgart/strucTypes5/solve/Rules.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="319">
<caret line="371" column="0" lean-forward="true" selection-start-line="371" selection-start-column="0" selection-end-line="371" selection-end-column="0" />
<state relative-caret-position="-259">
<caret line="133" column="0" lean-forward="true" selection-start-line="133" selection-start-column="0" selection-end-line="133" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#13279#13280#0" expanded="true" />
<element signature="e#13322#13323#0" expanded="true" />
<element signature="e#13539#13540#0" expanded="true" />
<element signature="e#13575#13576#0" expanded="true" />
<element signature="e#13655#13656#0" expanded="true" />
<element signature="e#13705#13706#0" expanded="true" />
</folding>
</state>
</provider>

View File

@ -28,6 +28,9 @@ public class TI {
public AssumptionMap assresult;
// Nur zum Test
public List<ConstraintAbstract> resultConstraints;
// Start TypeInference Algorithm, need Assumptions and a Class
public TI(AssumptionMap ass , ClassOrInterface cl) {
@ -115,6 +118,7 @@ public class TI {
// Result of Construct Basis für die Unifikation
System.out.println("Result of Solve: ");
System.out.println(newResultConstraints);
this.resultConstraints = newResultConstraints;

View File

@ -0,0 +1,26 @@
package de.dhbwstuttgart.strucTypes5.ausgabe;
import java.util.List;
/**
* Created by sebastian on 03.05.17.
*/
public class Help {
public static void print(String head, List liste) {
System.out.println("\n");
System.out.println("---------------");
System.out.println(head);
System.out.println("-----------------");
for (Object e : liste) {
System.out.println(e + "\n");
}
}
}

View File

@ -1,7 +1,38 @@
package de.dhbwstuttgart.strucTypes5.constraints;
import de.dhbwstuttgart.strucTypes5.typeVars.TypeVarAbstract;
import de.dhbwstuttgart.strucTypes5.typeVars.TypeVarInterface;
/**
* Created by sebastian on 20.04.17.
*/
public class ConstraintAbstract {
public abstract class ConstraintAbstract {
public boolean replaceTypeVarAbstract(TypeVarAbstract alt, TypeVarAbstract neu) {
return false;
}
public static TypeVarAbstract helpChange(TypeVarAbstract old, TypeVarAbstract neu, TypeVarAbstract inFrage) {
if (inFrage instanceof TypeVarInterface) {
((TypeVarInterface) inFrage).getInterfaceForConstraint().replaceTypeVarAbstract(old,neu);
return inFrage;
}
else {
return neu;
}
}
public static boolean helpChange2(TypeVarAbstract old, TypeVarAbstract neu, TypeVarAbstract inFrage) {
if (inFrage instanceof TypeVarInterface) {
ConstraintAbstract.helpChange(old,neu,inFrage);
return true;
}
return false;
}
}

View File

@ -16,6 +16,20 @@ public class ConstraintShouldEqual extends ConstraintAbstract{
this.t2 = t2;
}
@Override
public boolean replaceTypeVarAbstract(TypeVarAbstract alt, TypeVarAbstract neu) {
if (t1.equals(alt)) {
t1 = ConstraintAbstract.helpChange(alt,neu,t1);
}
if (t2.equals(alt)) {
t2 = ConstraintAbstract.helpChange(alt,neu,t2);
}
ConstraintAbstract.helpChange2(alt,neu,t1);
ConstraintAbstract.helpChange2(alt,neu,t2);
return true;
}
public TypeVarAbstract getT1() {
return t1;
}

View File

@ -21,6 +21,21 @@ public class ConstraintSubType extends ConstraintAbstract{
this.superType = superType;
}
@Override
public boolean replaceTypeVarAbstract(TypeVarAbstract alt, TypeVarAbstract neu) {
if (subtype.equals(alt)) {
subtype = ConstraintAbstract.helpChange(alt,neu,subtype);
}
if (superType.equals(alt)) {
superType = ConstraintAbstract.helpChange(alt,neu,superType);
}
ConstraintAbstract.helpChange2(alt,neu,subtype);
ConstraintAbstract.helpChange2(alt,neu,superType);
return true;
}
public TypeVarAbstract getSubtype() {
return subtype;
}

View File

@ -3,6 +3,7 @@ package de.dhbwstuttgart.strucTypes5.constraints;
import de.dhbwstuttgart.strucTypes5.algo.Type;
import de.dhbwstuttgart.strucTypes5.typeVars.TypeVarAbstract;
import java.util.ArrayList;
import java.util.List;
/**
@ -19,6 +20,26 @@ public class InterfaceForConstraint {
this.generics = generics;
}
public boolean replaceTypeVarAbstract(TypeVarAbstract alt, TypeVarAbstract neu) {
List<TypeVarAbstract> genericsneu = new ArrayList<>();
for (TypeVarAbstract tv : generics) {
if (tv.equals(alt)) {
genericsneu.add(neu);
}
else {
genericsneu.add(tv);
}
}
generics = genericsneu;
return true;
}
public TypeVarAbstract getStrucType() {
return strucType;
}

View File

@ -1,7 +1,76 @@
package de.dhbwstuttgart.strucTypes5.solve;
import de.dhbwstuttgart.strucTypes5.ausgabe.Help;
import de.dhbwstuttgart.strucTypes5.constraints.ConstraintAbstract;
import de.dhbwstuttgart.strucTypes5.constraints.ConstraintInterface;
import de.dhbwstuttgart.strucTypes5.constraints.ConstraintSubstitution;
import java.util.List;
/**
* Created by sebastian on 03.05.17.
*/
public class Ruler {
List<ConstraintInterface> constraintInterfaceList;
List<ConstraintSubstitution> substitutionList;
List<ConstraintAbstract> constraintList;
public Ruler(List<ConstraintInterface> constraintInterfaceList, List<ConstraintSubstitution> substitutionList, List<ConstraintAbstract> constraintList) {
this.constraintInterfaceList = constraintInterfaceList;
this.substitutionList = substitutionList;
this.constraintList = constraintList;
}
// gibt nur die Substitionen zurück
private List<ConstraintSubstitution> ruleAll(List<ConstraintAbstract> constraints, List<ConstraintSubstitution> substitutions) {
Rules rules = new Rules();
rules.setConstraintInterfaces(constraintInterfaceList);
rules.setSubstitutions(substitutions);
rules.reduceEqual(constraints);
rules.adapt2(constraints);
rules.adapt1(constraints);
rules.erase1(constraints);
rules.erase2(constraints);
rules.swap(constraints);
rules.subst(constraints);
rules.reflect(constraints);
return rules.getSubstitutions();
}
public void rule() {
//System.out.println("StartConstraints: " + constraintList);
Help.print("StartConstraints" , constraintList);
substitutionList = ruleAll(constraintList,substitutionList);
Help.print("Aktuelle Substitutionen: " ,substitutionList);
Help.print("Aktuelle Constriants: " , constraintList);
/*
for (int i = 0 ; i < 10 ; i++) {
Rules r = new Rules();
r.erase2(constraintList);
r.erase2(constraintList);
r.erase2(constraintList);
r.erase2(constraintList);
r.erase2(constraintList);
r.erase2(constraintList);
r.erase2(constraintList);
r.erase2(constraintList);
r.reflect(constraintList);
r.reflect(constraintList);
r.reflect(constraintList);
}
*/
}
}

View File

@ -1,15 +1,16 @@
package de.dhbwstuttgart.strucTypes5.solve;
import de.dhbwstuttgart.strucTypes5.algo.Type;
import de.dhbwstuttgart.strucTypes5.constraints.*;
import de.dhbwstuttgart.strucTypes5.typeVars.TypeVar;
import de.dhbwstuttgart.strucTypes5.typeVars.TypeVarAbstract;
import de.dhbwstuttgart.strucTypes5.typeVars.TypeVarInterface;
import de.dhbwstuttgart.strucTypes5.typeVars.TypeVarRefType;
import de.dhbwstuttgart.syntaxtree.Generic;
import de.dhbwstuttgart.typeinference.constraints.Constraint;
import java.util.ArrayList;
import java.util.List;
@ -27,8 +28,9 @@ public class Rules {
- Rules given by Plümicke
- reduce (1/2) reduceEqual implemented
- reduce 2 (not implemented)
- adapt1 - implemented
- adapt2 -
- adapt2 - implemented
- erase1 - implemented
- erase2 - implemented
- swap - implemented
@ -46,6 +48,7 @@ public class Rules {
if (csst.getSubtype() instanceof TypeVarRefType && csst.getSuperType() instanceof TypeVarRefType) {
if (csst.getSubtype().equals(csst.getSuperType())) {
constraints.remove(cs);
System.out.println("Regel Erase1 "+ cs);
return;
}
}
@ -60,6 +63,7 @@ public class Rules {
if (csse.getT1() instanceof TypeVarRefType && csse.getT2() instanceof TypeVarRefType) {
if (csse.getT1().equals(csse.getT2())) {
constraints.remove(cs);
System.out.println("Regel Erase 2" + cs);
return;
}
}
@ -79,6 +83,7 @@ public class Rules {
if (theta instanceof TypeVarRefType && typeVar instanceof TypeVar) {
csse.setT1(typeVar);
csse.setT2(theta);
System.out.println("Regel Swap" + csse);
return;
}
}
@ -100,16 +105,48 @@ public class Rules {
if (t1 instanceof TypeVar) {
if (t2 instanceof TypeVarRefType || t2 instanceof TypeVarInterface) {
ConstraintSubstitution constraintSubstitution = new ConstraintSubstitution(t1 , t2);
substitutions.add(constraintSubstitution);
// Todo Occors Check
return;
if (!occursCheck((TypeVar) t1)) {
ConstraintSubstitution constraintSubstitution = new ConstraintSubstitution(t1, t2);
replaceAll(constraints,t1,t2);
substitutions.add(constraintSubstitution);
System.out.println("Regel Substitution" + constraintSubstitution);
return;
}
}
}
}
}
}
// für substitution
public boolean occursCheck(TypeVar t) {
for (ConstraintSubstitution cs : substitutions) {
if (cs.getT1().equals(t)) {
return true;
}
}
return false;
}
public void replaceAll(List<ConstraintAbstract> constraints , TypeVarAbstract alt , TypeVarAbstract neu ) {
System.out.println(String.format("Replace All: %s -> %s" , alt , neu ));
for (ConstraintAbstract cs : constraints) {
// replace
cs.replaceTypeVarAbstract(alt,neu);
}
}
// ToDo Not implemented
public void reduce(List<ConstraintAbstract> constraints) {
for (ConstraintAbstract cs : constraints) {
@ -118,6 +155,8 @@ public class Rules {
}
}
/*
// Todo wer sagt dass man nicht irgendwo in der mitte anfängt
public void reflect(List<ConstraintAbstract> constriants) {
for (ConstraintAbstract cs : constriants) {
@ -126,17 +165,15 @@ public class Rules {
if (t1 instanceof TypeVarRefType || t1 instanceof TypeVarInterface ) {
// Hier muss geschaut werden ob es einen nächsten gibt
List<TypeVar> chain = reflectNext(t1,((ConstraintSubType) cs).getSubtype() , constriants);
List<TypeVar> chain = reflectNext(t1,((ConstraintSubType) cs).getSuperType() , constriants);
if (chain != null) {
System.out.println("erfolg");
System.out.println("Regel Reflect");
System.out.println(chain);
}
else {
System.out.println("kein erfolg");
return;
System.out.println("kein erfolg Reflect");
//return;
}
}
}
}
@ -162,7 +199,7 @@ public class Rules {
// Füge Type Var in die Kette ein
// ToDo Substituion
if (tProbNext instanceof TypeVar) {
//chain.add((TypeVar) tProbNext);
chain.add((TypeVar) tProbNext);
}
else {
System.err.println(Rules.class.getName() + "LogikFehler");
@ -184,8 +221,6 @@ public class Rules {
else {
return null;
}
}
// 3. sonst
else {
@ -198,6 +233,70 @@ public class Rules {
}
*/
public void reflect(List<ConstraintAbstract> constraints) {
for (ConstraintAbstract cs : constraints) {
if (cs instanceof ConstraintSubType) {
ConstraintSubType css = (ConstraintSubType) cs;
if (css.getSubtype() instanceof TypeVarRefType && css.getSuperType() instanceof TypeVar) {
List<TypeVarAbstract> reflect = reflectNext(constraints, css.getSubtype(), (TypeVar) css.getSuperType());
if (reflect != null) {
System.out.println("Reflect für " + reflect + css.getSubtype());
for (TypeVarAbstract tv : reflect) {
substitutions.add(new ConstraintSubstitution(tv , css.getSubtype()));
// Todo Unsauber wg
constraints.remove(cs);
return;
}
return;
}
}
}
}
}
public List<TypeVarAbstract> reflectNext(List<ConstraintAbstract> constraints , TypeVarAbstract startValue ,TypeVar nextPoint) {
ConstraintSubType next = next(nextPoint,constraints);
if (next != null) {
if (next.getSuperType().equals(startValue)) {
List<TypeVarAbstract> result = new ArrayList<>();
result.add(next.getSubtype());
constraints.remove(next); // ?? Sauber?
return result;
}
else if (next.getSuperType() instanceof TypeVar ) {
List<TypeVarAbstract> result = reflectNext(constraints,startValue,(TypeVar) next.getSuperType());
if (result != null) {
result.add(next.getSubtype());
constraints.remove(next); // ? Sauber
return result;
}
}
}
return null;
}
public ConstraintSubType next(TypeVar point, List<ConstraintAbstract> constraints) {
for (ConstraintAbstract cs : constraints) {
if (cs instanceof ConstraintSubType) {
if (((ConstraintSubType) cs).getSubtype().equals(point)) {
return (ConstraintSubType) cs;
}
}
}
return null;
}
public void reduceEqual(List<ConstraintAbstract> constraints) {
for (ConstraintAbstract cs : constraints) {
@ -230,6 +329,7 @@ public class Rules {
}
// Lösche element
constraints.remove(cs);
System.out.println("Regel Reduce Equal" + cs);
return;
}
}
@ -250,6 +350,7 @@ public class Rules {
constraints.remove(cs);
constraints.add(constraintShouldEqual);
// Todo Substitution für Types
System.out.println("Regel Adapt1 " + cs);
return;
}
}
@ -273,6 +374,7 @@ public class Rules {
public void adapt2(List<ConstraintAbstract> constraints) {
List<ConstraintAbstract> newConstraints = new ArrayList<>();
List<ConstraintAbstract> constraintsToRemove = new ArrayList<>();
for (ConstraintAbstract cs : constraints) {
@ -281,20 +383,34 @@ public class Rules {
ConstraintSubType css = (ConstraintSubType) cs;
if (css.getSuperType() instanceof TypeVar) {
if (css.getSubtype() instanceof TypeVarInterface || css.getSubtype() instanceof TypeVarRefType) {
adapt2Next(((ConstraintSubType) cs).getSubtype(), ((ConstraintSubType) cs).getSuperType() , constraints, newConstraints);
List<ConstraintAbstract> ctm = adapt2Next(((ConstraintSubType) cs).getSubtype(), ((ConstraintSubType) cs).getSuperType() , constraints, newConstraints);
if (ctm != null) {
constraintsToRemove.addAll(ctm);
constraintsToRemove.add(cs);
}
else {
constraintsToRemove = null;
}
break;
}
}
}
}
if (constraintsToRemove != null) {
System.out.println("Regel Adapt2" + constraintsToRemove);
constraints.removeAll(constraintsToRemove);
}
constraints.addAll(newConstraints);
}
public void adapt2Next(TypeVarAbstract start , TypeVarAbstract last , List<ConstraintAbstract> remainingConstraints, List<ConstraintAbstract> newConstraints) {
for (ConstraintAbstract cs : remainingConstraints) {
public List<ConstraintAbstract> adapt2Next(TypeVarAbstract start , TypeVarAbstract last , List<ConstraintAbstract> constraints, List<ConstraintAbstract> newConstraints) {
for (ConstraintAbstract cs : constraints) {
if (cs instanceof ConstraintSubType) {
ConstraintSubType css = (ConstraintSubType) cs;
@ -309,6 +425,8 @@ public class Rules {
System.out.println("adapt2Next : gefunden");
System.out.println(constraintInterface);
ArrayList<ConstraintAbstract> constraintsToRemove = new ArrayList<>();
// Should Equal ermitteln
if (constraintInterface.getSuperType() instanceof TypeVarInterface) {
@ -321,35 +439,32 @@ public class Rules {
if (iFGivenGenerics.size() == iFthisGenerics.size()) {
for (int i = 0 ; i < iFGivenGenerics.size() ; i++ ) {
newConstraints.add(new ConstraintShouldEqual(iFGivenGenerics.get(i) , iFthisGenerics.get(i)));
// Substitution
}
}
}
return;
}
}
constraintsToRemove.add(css);
return constraintsToRemove;
}
}
else if (css.getSuperType() instanceof TypeVar) {
List<ConstraintAbstract> remConst2 = new ArrayList<>();
remConst2.addAll(remainingConstraints);
remConst2.addAll(constraints);
remConst2.remove(cs);
adapt2Next(start,css.getSuperType() , remConst2 , newConstraints);
}
}
}
}
return null;
}
// Getter und Setter

View File

@ -22,6 +22,7 @@ public class TypeVarRefType extends TypeVarAbstract {
}
/*
@Override
public boolean equals(Object o) {
if (this == o) return true;
@ -31,6 +32,26 @@ public class TypeVarRefType extends TypeVarAbstract {
return getRefType() != null ? getRefType().equals(that.getRefType()) : that.getRefType() == null;
}
*/
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof TypeVarRefType)) return false;
TypeVarRefType that = (TypeVarRefType) o;
if (that.toString().equals(this.toString())) {
return true;
}
else {
return false;
}
}
@Override
public String toString() {

View File

@ -1,8 +1,13 @@
package strucTypes5;
import de.dhbwstuttgart.parser.JavaTXParser;
import de.dhbwstuttgart.strucTypes3.SubTypeConstraint;
import de.dhbwstuttgart.strucTypes5.algo.TI;
import de.dhbwstuttgart.strucTypes5.assumptions.AssumptionMap;
import de.dhbwstuttgart.strucTypes5.constraints.*;
import de.dhbwstuttgart.strucTypes5.solve.Ruler;
import de.dhbwstuttgart.strucTypes5.solve.Rules;
import de.dhbwstuttgart.strucTypes5.typeVars.*;
import de.dhbwstuttgart.syntaxtree.ClassOrInterface;
import de.dhbwstuttgart.syntaxtree.SourceFile;
import org.junit.Test;
@ -54,20 +59,112 @@ public class SolveTest {
// Take The Generatet Constraints from ti:
// Try To Solve
System.out.println("\n \n \n \n Starte einfach Unifikation ");
System.out.println("Gegegeben Constraints: " + ti1.resultConstraints);
// Generate Interfaces Give
TypeVarRefType myInteger = (TypeVarRefType) getTypeVar(ti1.resultConstraints , "TVar_MyInteger");
TypeVarAbstract v2 = getTypeVar(ti1.resultConstraints , "TVar_2");
TypeVarAbstract v5 = getTypeVar(ti1.resultConstraints , "TVar_5");
System.out.println(myInteger.toString());
System.out.println(v2.toString());
System.out.println(v5.toString());
// Generiere Interface 1
List<TypeVarAbstract> generics = new ArrayList<>();
generics.add(TypeVarFactory.makeTypeVar(myInteger.getRefType()));
generics.add(TypeVarFactory.makeTypeVar(myInteger.getRefType()));
InterfaceForConstraint if1 = new InterfaceForConstraint(v2, generics);
ConstraintInterface constraintInterface = new ConstraintInterface(TypeVarFactory.makeTypeVar(myInteger.getRefType()) , TypeVarFactory.makeTypeVar(if1) );
List<ConstraintInterface> interfaces = new ArrayList<>();
interfaces.add(constraintInterface);
// Generiere Interface 2
List<TypeVarAbstract> generics2 = new ArrayList<>();
generics2.add(TypeVarFactory.makeTypeVar(myInteger.getRefType()));
generics2.add(TypeVarFactory.makeTypeVar(myInteger.getRefType()));
InterfaceForConstraint if2 = new InterfaceForConstraint(v5, generics);
ConstraintInterface constraintInterface2 = new ConstraintInterface(TypeVarFactory.makeTypeVar(myInteger.getRefType()) , TypeVarFactory.makeTypeVar(if2) );
interfaces.add(constraintInterface2);
System.out.println(interfaces);
System.out.println("Manuell Test");
/*
Rules rules = new Rules();
rules.setConstraintInterfaces(interfaces);
System.out.println(ti1.resultConstraints);
rules.adapt2(ti1.resultConstraints);
System.out.println(ti1.resultConstraints);
rules.swap(ti1.resultConstraints);
System.out.println(ti1.resultConstraints);
rules.swap(ti1.resultConstraints);
System.out.println(ti1.resultConstraints);
rules.subst(ti1.resultConstraints);
System.out.println(ti1.resultConstraints);
rules.subst(ti1.resultConstraints);
System.out.println(ti1.resultConstraints);
System.out.println(rules.substitutions);
*/
List<ConstraintSubstitution> substitutions = new ArrayList<>();
Ruler ruler = new Ruler(interfaces,substitutions,ti1.resultConstraints);
System.out.println("start ...");
while (ti1.resultConstraints.size() > 0) {
ruler.rule();
}
}
} catch (Exception exc) {
exc.printStackTrace();
fail();
}
assertTrue("Tests durchlaufen", filenames.size() > 0);
}
private TypeVarAbstract getTypeVar(List<ConstraintAbstract> constraints , String name) {
for (ConstraintAbstract cs : constraints) {
if (cs instanceof ConstraintSubType) {
ConstraintSubType css = (ConstraintSubType) cs;
if (css.getSubtype().toString().equals(name)) {
return css.getSubtype();
}
else if (css.getSuperType().toString().equals(name)) {
return css.getSuperType();
}
else if (css.getSuperType() instanceof TypeVarInterface) {
TypeVarInterface tcv = (TypeVarInterface) css.getSuperType();
if (tcv.getInterfaceForConstraint().getStrucType().toString().equals(name)) {
return tcv.getInterfaceForConstraint().getStrucType();
}
}
}
}
return null;
}
}