Package: TypeCheckerAssistantFactory

TypeCheckerAssistantFactory

nameinstructionbranchcomplexitylinemethod
TypeCheckerAssistantFactory()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createAClassTypeAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createAExplicitFunctionDefinitionAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createAExplicitOperationDefinitionAssistant(String)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createAFunctionTypeAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createAImplicitFunctionDefinitionAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createAImplicitOperationDefinitionAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createAModuleExportsAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createAModuleImportsAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createAModuleModulesAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createAOperationTypeAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createAPatternTypePairAssistant(String)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createARecordInvariantTypeAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createATypeBindAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createPAccessSpecifierAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createPBindAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createPDefinitionAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createPDefinitionListAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createPDefinitionSet()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createPMultipleBindAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createPPatternAssistant(String)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createPPatternListAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createPTypeAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createPatternList()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createSClassDefinitionAssistant()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
createSFunctionDefinitionAssistant()
M: 0 C: 12
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
getAllDefinitionLocator(String)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getAlwaysMatchingPatternChecker(String)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getCallableOperationChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getClassBasisChecker(Environment)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getClassTypeFinder(Environment)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getComposeTypeCollector()
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getConcreateTypeImplementor()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getDefinitionCollector()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getDefinitionEqualityChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getDefinitionFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getDefinitionTypeFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getDefinitionTypeResolver()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getDereferer()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getExitTypeCollector()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getExportDefinitionFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getExportDefinitionListFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getFreeVariablesChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getFunctionChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getFunctionTypeFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getImplicitDefinitionFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getImportDefinitionFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getInstanceVariableChecker()
M: 5 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
getIsEqVisitor()
M: 11 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
getIsOrderedVisitor()
M: 0 C: 11
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
getKindFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getLexNameTokenAssistant()
M: 0 C: 12
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
getMapBasisChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getMapTypeFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getMultipleBindLister()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getMultipleEqualityChecker()
M: 0 C: 11
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
getNameFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getNarrowerThanComparator()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getOperationBasisChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getOperationChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getOperationTypeFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getPTypeExtendedChecker(String)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getPTypeFinder(String)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getPTypeFunctionChecker(String)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getPTypeResolver()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getPatternResolver(String)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getPatternUnresolver()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getPossibleBindTypeFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getPossibleTypeFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getPreNameFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getProductBasisChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getProductExtendedChecker(String)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getProductExtendedTypeFinder(String)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getProductTypeFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getQualificationVisitor()
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getRecordBasisChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getRecordTypeFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getSelfDefinitionFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getSeqBasisChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getSeqTypeFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getSetBasisChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getSetTypeFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getSimplePatternChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getTagBasisChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getTypeComparator()
M: 0 C: 12
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
getTypeDefinitionChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getTypeDisplayer()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getTypeEqualityChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getTypeUnresolver()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getUnionBasisChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getUnionTypeFinder()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getUnusedChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getUpdatableChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getUsedChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getUsedMarker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getValueDefinitionChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getVariableNameCollector()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getVoidBasisChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getVoidExistanceChecker()
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

Coverage

1: /*
2: * #%~
3: * The VDM Type Checker
4: * %%
5: * Copyright (C) 2008 - 2014 Overture
6: * %%
7: * This program is free software: you can redistribute it and/or modify
8: * it under the terms of the GNU General Public License as
9: * published by the Free Software Foundation, either version 3 of the
10: * License, or (at your option) any later version.
11: *
12: * This program is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15: * GNU General Public License for more details.
16: *
17: * You should have received a copy of the GNU General Public
18: * License along with this program. If not, see
19: * <http://www.gnu.org/licenses/gpl-3.0.html>.
20: * #~%
21: */
22: package org.overture.typechecker.assistant;
23:
24: import java.util.Collection;
25: import java.util.LinkedList;
26: import java.util.List;
27:
28: import org.overture.ast.analysis.AnalysisAdaptor;
29: import org.overture.ast.analysis.AnswerAdaptor;
30: import org.overture.ast.analysis.QuestionAnswerAdaptor;
31: import org.overture.ast.analysis.intf.IAnswer;
32: import org.overture.ast.analysis.intf.IQuestion;
33: import org.overture.ast.analysis.intf.IQuestionAnswer;
34: import org.overture.ast.assistant.AstAssistantFactory;
35: import org.overture.ast.assistant.pattern.PTypeList;
36: import org.overture.ast.definitions.PDefinition;
37: import org.overture.ast.intf.lex.ILexLocation;
38: import org.overture.ast.intf.lex.ILexNameToken;
39: import org.overture.ast.lex.LexNameList;
40: import org.overture.ast.lex.LexNameSet;
41: import org.overture.ast.modules.AModuleModules;
42: import org.overture.ast.patterns.PMultipleBind;
43: import org.overture.ast.types.AAccessSpecifierAccessSpecifier;
44: import org.overture.ast.types.AClassType;
45: import org.overture.ast.types.AFunctionType;
46: import org.overture.ast.types.AOperationType;
47: import org.overture.ast.types.AProductType;
48: import org.overture.ast.types.ARecordInvariantType;
49: import org.overture.ast.types.SSetType;
50: import org.overture.ast.types.AUnionType;
51: import org.overture.ast.types.PType;
52: import org.overture.ast.types.SMapType;
53: import org.overture.ast.types.SSeqType;
54: import org.overture.ast.util.PTypeSet;
55: import org.overture.typechecker.Environment;
56: import org.overture.typechecker.LexNameTokenAssistant;
57: import org.overture.typechecker.TypeCheckInfo;
58: import org.overture.typechecker.TypeComparator;
59: import org.overture.typechecker.assistant.definition.AExplicitFunctionDefinitionAssistantTC;
60: import org.overture.typechecker.assistant.definition.AExplicitOperationDefinitionAssistantTC;
61: import org.overture.typechecker.assistant.definition.AImplicitFunctionDefinitionAssistantTC;
62: import org.overture.typechecker.assistant.definition.AImplicitOperationDefinitionAssistantTC;
63: import org.overture.typechecker.assistant.definition.PAccessSpecifierAssistantTC;
64: import org.overture.typechecker.assistant.definition.PDefinitionAssistantTC;
65: import org.overture.typechecker.assistant.definition.PDefinitionListAssistantTC;
66: import org.overture.typechecker.assistant.definition.PDefinitionSet;
67: import org.overture.typechecker.assistant.definition.SClassDefinitionAssistantTC;
68: import org.overture.typechecker.assistant.definition.SFunctionDefinitionAssistantTC;
69: import org.overture.typechecker.assistant.module.AModuleExportsAssistantTC;
70: import org.overture.typechecker.assistant.module.AModuleImportsAssistantTC;
71: import org.overture.typechecker.assistant.module.AModuleModulesAssistantTC;
72: import org.overture.typechecker.assistant.pattern.APatternTypePairAssistant;
73: import org.overture.typechecker.assistant.pattern.ATypeBindAssistantTC;
74: import org.overture.typechecker.assistant.pattern.PBindAssistantTC;
75: import org.overture.typechecker.assistant.pattern.PMultipleBindAssistantTC;
76: import org.overture.typechecker.assistant.pattern.PPatternAssistantTC;
77: import org.overture.typechecker.assistant.pattern.PPatternListAssistantTC;
78: import org.overture.typechecker.assistant.pattern.PatternListTC;
79: import org.overture.typechecker.assistant.type.AClassTypeAssistantTC;
80: import org.overture.typechecker.assistant.type.AFunctionTypeAssistantTC;
81: import org.overture.typechecker.assistant.type.AOperationTypeAssistantTC;
82: import org.overture.typechecker.assistant.type.ARecordInvariantTypeAssistantTC;
83: import org.overture.typechecker.assistant.type.PTypeAssistantTC;
84: import org.overture.typechecker.utilities.CallableOperationChecker;
85: import org.overture.typechecker.utilities.ComposeTypeCollector;
86: import org.overture.typechecker.utilities.DefinitionCollector;
87: import org.overture.typechecker.utilities.DefinitionEqualityChecker;
88: import org.overture.typechecker.utilities.DefinitionFinder;
89: import org.overture.typechecker.utilities.DefinitionFinder.Newquestion;
90: import org.overture.typechecker.utilities.DefinitionTypeFinder;
91: import org.overture.typechecker.utilities.DefinitionTypeResolver;
92: import org.overture.typechecker.utilities.DefinitionTypeResolver.NewQuestion;
93: import org.overture.typechecker.utilities.Dereferer;
94: import org.overture.typechecker.utilities.ExitTypeCollector;
95: import org.overture.typechecker.utilities.FreeVarInfo;
96: import org.overture.typechecker.utilities.FreeVariablesChecker;
97: import org.overture.typechecker.utilities.FunctionChecker;
98: import org.overture.typechecker.utilities.ImplicitDefinitionFinder;
99: import org.overture.typechecker.utilities.InstanceVariableChecker;
100: import org.overture.typechecker.utilities.KindFinder;
101: import org.overture.typechecker.utilities.NameFinder;
102: import org.overture.typechecker.utilities.OperationChecker;
103: import org.overture.typechecker.utilities.PTypeFunctionChecker;
104: import org.overture.typechecker.utilities.SelfDefinitionFinder;
105: import org.overture.typechecker.utilities.TypeDefinitionChecker;
106: import org.overture.typechecker.utilities.UnusedChecker;
107: import org.overture.typechecker.utilities.UpdatableChecker;
108: import org.overture.typechecker.utilities.UsedChecker;
109: import org.overture.typechecker.utilities.UsedMarker;
110: import org.overture.typechecker.utilities.ValueDefinitionChecker;
111: import org.overture.typechecker.utilities.VariableNameCollector;
112: import org.overture.typechecker.utilities.expression.ExportDefinitionFinder;
113: import org.overture.typechecker.utilities.expression.ExportDefinitionListFinder;
114: import org.overture.typechecker.utilities.expression.ImportDefinitionFinder;
115: import org.overture.typechecker.utilities.expression.PreNameFinder;
116: import org.overture.typechecker.utilities.pattern.AllDefinitionLocator;
117: import org.overture.typechecker.utilities.pattern.AlwaysMatchingPatternChecker;
118: import org.overture.typechecker.utilities.pattern.MultipleBindLister;
119: import org.overture.typechecker.utilities.pattern.PatternResolver;
120: import org.overture.typechecker.utilities.pattern.PatternUnresolver;
121: import org.overture.typechecker.utilities.pattern.PossibleBindTypeFinder;
122: import org.overture.typechecker.utilities.pattern.PossibleTypeFinder;
123: import org.overture.typechecker.utilities.pattern.SimplePatternChecker;
124: import org.overture.typechecker.utilities.type.*;
125: import org.overture.typechecker.visitor.QualificationVisitor;
126:
127: //TODO Add assistant Javadoc
128:
129: /**
130: * An assistant factory for the Overture Typecher. The methods supplied here only support pure VDM nodes.
131: * Override/extend as needed.
132: *
133: * @author ldc
134: */
135: public class TypeCheckerAssistantFactory extends AstAssistantFactory
136:                 implements ITypeCheckerAssistantFactory
137: {
138:         // instance variables of things to return
139:         transient TypeComparator typeComp;
140:         transient LexNameTokenAssistant lnt;
141:         transient SFunctionDefinitionAssistantTC sfd;
142:         transient IsEqVisitor iEqV;
143:         transient IsOrderedVisitor iOrdV;
144:         transient MultipleEqualityChecker mulEqCheckr;
145:
146:         //        @Override
147:         //        public AApplyObjectDesignatorAssistantTC createAApplyObjectDesignatorAssistant()
148:         //        {
149:         //                return new AApplyObjectDesignatorAssistantTC(this);
150:         //        }
151:
152:         // @Override
153:         // public ABracketTypeAssistantTC createABracketTypeAssistant()
154:         // {
155:         // return new ABracketTypeAssistantTC(this);
156:         // }
157:
158:         @Override public AClassTypeAssistantTC createAClassTypeAssistant()
159:         {
160:                 return new AClassTypeAssistantTC(this);
161:         }
162:
163:         @Override public AFunctionTypeAssistantTC createAFunctionTypeAssistant()
164:         {
165:                 return new AFunctionTypeAssistantTC(this);
166:         }
167:
168:         @Override public AOperationTypeAssistantTC createAOperationTypeAssistant()
169:         {
170:                 return new AOperationTypeAssistantTC(this);
171:         }
172:
173:         //        @Override
174:         //        public APatternListTypePairAssistantTC createAPatternListTypePairAssistant()
175:         //        {
176:         //                return new APatternListTypePairAssistantTC(this);
177:         //        }
178:
179:         @Override public ARecordInvariantTypeAssistantTC createARecordInvariantTypeAssistant()
180:         {
181:                 return new ARecordInvariantTypeAssistantTC(this);
182:         }
183:
184:         //        @Override
185:         //        public AUnionTypeAssistantTC createAUnionTypeAssistant()
186:         //        {
187:         //                return new AUnionTypeAssistantTC(this);
188:         //        }
189:
190:         @Override public PTypeAssistantTC createPTypeAssistant()
191:         {
192:                 return new PTypeAssistantTC(this);
193:         }
194:
195:         // definition
196:
197:         // @Override
198:         // public AAssignmentDefinitionAssistantTC createAAssignmentDefinitionAssistant()
199:         // {
200:         // return new AAssignmentDefinitionAssistantTC(this);
201:         // }
202:
203:         //        @Override
204:         //        public ABusClassDefinitionAssistantTC createABusClassDefinitionAssistant()
205:         //        {
206:         //                return new ABusClassDefinitionAssistantTC(this);
207:         //        }
208:
209:         //        @Override
210:         //        public ACpuClassDefinitionAssistantTC createACpuClassDefinitionAssistant()
211:         //        {
212:         //                return new ACpuClassDefinitionAssistantTC(this);
213:         //        }
214:
215:         @Override public AExplicitFunctionDefinitionAssistantTC createAExplicitFunctionDefinitionAssistant()
216:         {
217:                 return new AExplicitFunctionDefinitionAssistantTC(this);
218:         }
219:
220:         @Override public AExplicitOperationDefinitionAssistantTC createAExplicitOperationDefinitionAssistant(String fromModule)
221:         {
222:                 return new AExplicitOperationDefinitionAssistantTC(this, fromModule);
223:         }
224:
225:         @Override public AImplicitFunctionDefinitionAssistantTC createAImplicitFunctionDefinitionAssistant()
226:         {
227:                 return new AImplicitFunctionDefinitionAssistantTC(this);
228:         }
229:
230:         @Override public AImplicitOperationDefinitionAssistantTC createAImplicitOperationDefinitionAssistant()
231:         {
232:                 return new AImplicitOperationDefinitionAssistantTC(this);
233:         }
234:
235:         // @Override
236:         // public AImportedDefinitionAssistantTC createAImportedDefinitionAssistant()
237:         // {
238:         // return new AImportedDefinitionAssistantTC(this);
239:         // }
240:
241:         //        @Override
242:         //        public AInstanceVariableDefinitionAssistantTC createAInstanceVariableDefinitionAssistant()
243:         //        {
244:         //                return new AInstanceVariableDefinitionAssistantTC(this);
245:         //        }
246:
247:         //        @Override
248:         //        public ALocalDefinitionAssistantTC createALocalDefinitionAssistant()
249:         //        {
250:         //                return new ALocalDefinitionAssistantTC(this);
251:         //        }
252:
253:         //        @Override
254:         //        public AStateDefinitionAssistantTC createAStateDefinitionAssistant()
255:         //        {
256:         //                return new AStateDefinitionAssistantTC(this);
257:         //        }
258:
259:         // @Override
260:         // public ASystemClassDefinitionAssistantTC createASystemClassDefinitionAssistant()
261:         // {
262:         // return new ASystemClassDefinitionAssistantTC(this);
263:         // }
264:
265:         //        @Override
266:         //        public AThreadDefinitionAssistantTC createAThreadDefinitionAssistant()
267:         //        {
268:         //                return new AThreadDefinitionAssistantTC(this);
269:         //        }
270:
271:         //        @Override
272:         //        public ATypeDefinitionAssistantTC createATypeDefinitionAssistant()
273:         //        {
274:         //                return new ATypeDefinitionAssistantTC(this);
275:         //        }
276:
277:         // @Override
278:         // public AValueDefinitionAssistantTC createAValueDefinitionAssistant()
279:         // {
280:         // return new AValueDefinitionAssistantTC(this);
281:         // }
282:
283:         @Override public PAccessSpecifierAssistantTC createPAccessSpecifierAssistant()
284:         {
285:                 return new PAccessSpecifierAssistantTC(this);
286:         }
287:
288:         @Override public PDefinitionAssistantTC createPDefinitionAssistant()
289:         {
290:                 return new PDefinitionAssistantTC(this);
291:         }
292:
293:         @Override public PDefinitionListAssistantTC createPDefinitionListAssistant()
294:         {
295:                 return new PDefinitionListAssistantTC(this);
296:         }
297:
298:         @Override public PDefinitionSet createPDefinitionSet()
299:         {
300:                 return new PDefinitionSet(this);
301:         }
302:
303:         //        @Override
304:         //        public PTraceDefinitionAssistantTC createPTraceDefinitionAssistant()
305:         //        {
306:         //                return new PTraceDefinitionAssistantTC(this);
307:         //        }
308:
309:         @Override public SClassDefinitionAssistantTC createSClassDefinitionAssistant()
310:         {
311:                 return new SClassDefinitionAssistantTC(this);
312:         }
313:
314:         // expression
315:
316:         //        @Override
317:         //        public AApplyExpAssistantTC createAApplyExpAssistant()
318:         //        {
319:         //                return new AApplyExpAssistantTC(this);
320:         //        }
321:
322:         //        @Override
323:         //        public ACaseAlternativeAssistantTC createACaseAlternativeAssistant()
324:         //        {
325:         //                return new ACaseAlternativeAssistantTC(this);
326:         //        }
327:
328:         //        @Override
329:         //        public PExpAssistantTC createPExpAssistant()
330:         //        {
331:         //                return new PExpAssistantTC(this);
332:         //        }
333:
334:         //        @Override
335:         //        public SBinaryExpAssistantTC createSBinaryExpAssistant()
336:         //        {
337:         //                return new SBinaryExpAssistantTC(this);
338:         //        }
339:
340:         // module
341:
342:         //        @Override
343:         //        public AFromModuleImportsAssistantTC createAFromModuleImportsAssistant()
344:         //        {
345:         //                return new AFromModuleImportsAssistantTC(this);
346:         //        }
347:
348:         @Override public AModuleExportsAssistantTC createAModuleExportsAssistant()
349:         {
350:                 return new AModuleExportsAssistantTC(this);
351:         }
352:
353:         @Override public AModuleImportsAssistantTC createAModuleImportsAssistant()
354:         {
355:                 return new AModuleImportsAssistantTC(this);
356:         }
357:
358:         @Override public AModuleModulesAssistantTC createAModuleModulesAssistant()
359:         {
360:                 return new AModuleModulesAssistantTC(this);
361:         }
362:
363:         // @Override
364:         // public PExportAssistantTC createPExportAssistant()
365:         // {
366:         // return new PExportAssistantTC(this);
367:         // }
368:
369:         // @Override
370:         // public PImportAssistantTC createPImportAssistant()
371:         // {
372:         // return new PImportAssistantTC(this);
373:         // }
374:
375:         // pattern
376:
377:         // @Override
378:         // public ABooleanPatternAssistantTC createABooleanPatternAssistant()
379:         // {
380:         // return new ABooleanPatternAssistantTC(this);
381:         // }
382:
383:         // @Override
384:         // public ACharacterPatternAssistantTC createACharacterPatternAssistant()
385:         // {
386:         // return new ACharacterPatternAssistantTC(this);
387:         // }
388:
389:         // @Override
390:         // public AConcatenationPatternAssistantTC createAConcatenationPatternAssistant()
391:         // {
392:         // return new AConcatenationPatternAssistantTC(this);
393:         // }
394:         //
395:         // @Override
396:         // public AExpressionPatternAssistantTC createAExpressionPatternAssistant()
397:         // {
398:         // return new AExpressionPatternAssistantTC(this);
399:         // }
400:
401:         //        @Override
402:         //        public AMapletPatternMapletAssistantTC createAMapletPatternMapletAssistant()
403:         //        {
404:         //                return new AMapletPatternMapletAssistantTC(this);
405:         //        }
406:
407:         // @Override
408:         // public AMapPatternAssistantTC createAMapPatternAssistant()
409:         // {
410:         // return new AMapPatternAssistantTC(this);
411:         // }
412:
413:         // @Override
414:         // public AMapUnionPatternAssistantTC createAMapUnionPatternAssistant()
415:         // {
416:         // return new AMapUnionPatternAssistantTC(this);
417:         // }
418:
419:         @Override public APatternTypePairAssistant createAPatternTypePairAssistant(String fromModule)
420:         {
421:                 return new APatternTypePairAssistant(this, fromModule);
422:         }
423:
424:         // @Override
425:         // public ARecordPatternAssistantTC createARecordPatternAssistant()
426:         // {
427:         // return new ARecordPatternAssistantTC(this);
428:         // }
429:
430:         // @Override
431:         // public ASeqPatternAssistantTC createASeqPatternAssistant()
432:         // {
433:         // return new ASeqPatternAssistantTC(this);
434:         // }
435:
436:         //        @Override
437:         //        public ASetBindAssistantTC createASetBindAssistant()
438:         //        {
439:         //                return new ASetBindAssistantTC(this);
440:         //        }
441:
442:         // @Override
443:         // public ASetPatternAssistantTC createASetPatternAssistant()
444:         // {
445:         // return new ASetPatternAssistantTC(this);
446:         // }
447:
448:         // @Override
449:         // public ATuplePatternAssistantTC createATuplePatternAssistant()
450:         // {
451:         // return new ATuplePatternAssistantTC(this);
452:         // }
453:
454:         @Override public ATypeBindAssistantTC createATypeBindAssistant()
455:         {
456:                 return new ATypeBindAssistantTC(this);
457:         }
458:
459:         // @Override
460:         // public AUnionPatternAssistantTC createAUnionPatternAssistant()
461:         // {
462:         // return new AUnionPatternAssistantTC(this);
463:         // }
464:
465:         @Override public PatternListTC createPatternList()
466:         {
467:                 return new PatternListTC(this);
468:         }
469:
470:         @Override public PBindAssistantTC createPBindAssistant()
471:         {
472:                 return new PBindAssistantTC(this);
473:         }
474:
475:         @Override public PMultipleBindAssistantTC createPMultipleBindAssistant()
476:         {
477:                 return new PMultipleBindAssistantTC(this);
478:         }
479:
480:         @Override public PPatternAssistantTC createPPatternAssistant(String fromModule)
481:         {
482:                 return new PPatternAssistantTC(this, fromModule);
483:         }
484:
485:         //        @Override
486:         //        public PPatternBindAssistantTC createPPatternBindAssistant()
487:         //        {
488:         //                return new PPatternBindAssistantTC(this);
489:         //        }
490:
491:         @Override public PPatternListAssistantTC createPPatternListAssistant()
492:         {
493:                 return new PPatternListAssistantTC(this);
494:         }
495:
496:         // statement
497:
498:         // @Override
499:         // public AAlwaysStmAssistantTC createAAlwaysStmAssistant()
500:         // {
501:         // return new AAlwaysStmAssistantTC(this);
502:         // }
503:         //
504:         // @Override
505:         // public AAssignmentStmAssistantTC createAAssignmentStmAssistant()
506:         // {
507:         // return new AAssignmentStmAssistantTC(this);
508:         // }
509:
510:         //        @Override
511:         //        public ABlockSimpleBlockStmAssistantTC createABlockSimpleBlockStmAssistant()
512:         //        {
513:         //                return new ABlockSimpleBlockStmAssistantTC(this);
514:         //        }
515:
516:         //        @Override
517:         //        public ACallObjectStatementAssistantTC createACallObjectStatementAssistant()
518:         //        {
519:         //                return new ACallObjectStatementAssistantTC(this);
520:         //        }
521:
522:         //        @Override
523:         //        public ACallStmAssistantTC createACallStmAssistant()
524:         //        {
525:         //                return new ACallStmAssistantTC(this);
526:         //        }
527:
528:         // @Override
529:         // public ACaseAlternativeStmAssistantTC createACaseAlternativeStmAssistant()
530:         // {
531:         // return new ACaseAlternativeStmAssistantTC(this);
532:         // }
533:         //
534:         // @Override
535:         // public ACasesStmAssistantTC createACasesStmAssistant()
536:         // {
537:         // return new ACasesStmAssistantTC(this);
538:         // }
539:         //
540:         // @Override
541:         // public AElseIfStmAssistantTC createAElseIfStmAssistant()
542:         // {
543:         // return new AElseIfStmAssistantTC(this);
544:         // }
545:         //
546:         // @Override
547:         // public AExitStmAssistantTC createAExitStmAssistant()
548:         // {
549:         // return new AExitStmAssistantTC(this);
550:         // }
551:
552:         //        @Override
553:         //        public AExternalClauseAssistantTC createAExternalClauseAssistant()
554:         //        {
555:         //                return new AExternalClauseAssistantTC(this);
556:         //        }
557:
558:         // @Override
559:         // public AForAllStmAssistantTC createAForAllStmAssistant()
560:         // {
561:         // return new AForAllStmAssistantTC(this);
562:         // }
563:         //
564:         // @Override
565:         // public AForIndexStmAssistantTC createAForIndexStmAssistant()
566:         // {
567:         // return new AForIndexStmAssistantTC(this);
568:         // }
569:
570:         // @Override
571:         // public AForPatternBindStmAssitantTC createAForPatternBindStmAssitant()
572:         // {
573:         // return new AForPatternBindStmAssitantTC(this);
574:         // }
575:         //
576:         // @Override
577:         // public AIfStmAssistantTC createAIfStmAssistant()
578:         // {
579:         // return new AIfStmAssistantTC(this);
580:         // }
581:         //
582:         // @Override
583:         // public ALetBeStStmAssistantTC createALetBeStStmAssistant()
584:         // {
585:         // return new ALetBeStStmAssistantTC(this);
586:         // }
587:
588:         //        @Override
589:         //        public ANonDeterministicSimpleBlockStmAssistantTC createANonDeterministicSimpleBlockStmAssistant()
590:         //        {
591:         //                return new ANonDeterministicSimpleBlockStmAssistantTC(this);
592:         //        }
593:
594:         // @Override
595:         // public AReturnStmAssistantTC createAReturnStmAssistant()
596:         // {
597:         // return new AReturnStmAssistantTC(this);
598:         // }
599:         //
600:         // @Override
601:         // public ATixeStmAssistantTC createATixeStmAssistant()
602:         // {
603:         // return new ATixeStmAssistantTC(this);
604:         // }
605:
606:         // @Override
607:         // public ATrapStmAssistantTC createATrapStmAssistant()
608:         // {
609:         // return new ATrapStmAssistantTC(this);
610:         // }
611:         //
612:         // @Override
613:         // public AWhileStmAssistantTC createAWhileStmAssistant()
614:         // {
615:         // return new AWhileStmAssistantTC(this);
616:         // }
617:
618:         //        @Override
619:         //        public PStateDesignatorAssistantTC createPStateDesignatorAssistant()
620:         //        {
621:         //                return new PStateDesignatorAssistantTC(this);
622:         //        }
623:
624:         //        @Override
625:         //        public PStmAssistantTC createPStmAssistant()
626:         //        {
627:         //                return new PStmAssistantTC(this);
628:         //        }
629:
630:         // @Override
631:         // public SLetDefStmAssistantTC createSLetDefStmAssistant()
632:         // {
633:         // return new SLetDefStmAssistantTC(this);
634:         // }
635:         //
636:         // @Override
637:         // public SSimpleBlockStmAssistantTC createSSimpleBlockStmAssistant()
638:         // {
639:         // return new SSimpleBlockStmAssistantTC(this);
640:         // }
641:
642:         /* New visitor utilities */
643:
644:         @Override public IAnswer<List<PDefinition>> getDefinitionCollector()
645:         {
646:                 return new DefinitionCollector(this);
647:         }
648:
649:         @Override public IAnswer<PType> getDefinitionTypeFinder()
650:         {
651:                 return new DefinitionTypeFinder(this);
652:         }
653:
654:         @Override public IQuestionAnswer<Object, Boolean> getDefinitionEqualityChecker()
655:         {
656:                 return new DefinitionEqualityChecker(this);
657:         }
658:
659:         @Override public IAnswer<LexNameList> getVariableNameCollector()
660:         {
661:                 return new VariableNameCollector(this);
662:         }
663:
664:         @Override public IAnswer<PDefinition> getSelfDefinitionFinder()
665:         {
666:                 return new SelfDefinitionFinder(this);
667:         }
668:
669:         @Override public IAnswer<PTypeSet> getExitTypeCollector()
670:         {
671:                 return new ExitTypeCollector(this);
672:         }
673:
674:         @Override public IQuestionAnswer<Newquestion, PDefinition> getDefinitionFinder()
675:         {
676:                 return new DefinitionFinder(this);
677:         }
678:
679:         @Override public IQuestionAnswer<NameFinder.Newquestion, PDefinition> getNameFinder()
680:         {
681:                 return new NameFinder(this);
682:         }
683:
684:         @Override public AnswerAdaptor<Boolean> getFunctionChecker()
685:         {
686:                 return new FunctionChecker(this);
687:         }
688:
689:         @Override public IAnswer<Boolean> getOperationChecker()
690:         {
691:                 return new OperationChecker(this);
692:         }
693:
694:         @Override public IAnswer<String> getKindFinder()
695:         {
696:                 return new KindFinder(this);
697:         }
698:
699:         @Override public IAnswer<Boolean> getUpdatableChecker()
700:         {
701:                 return new UpdatableChecker(this);
702:         }
703:
704:         @Override public IAnswer<Boolean> getCallableOperationChecker()
705:         {
706:                 return new CallableOperationChecker(this);
707:         }
708:
709:         @Override public AnalysisAdaptor getUsedMarker()
710:         {
711:                 return new UsedMarker(this);
712:         }
713:
714:         @Override public IQuestion<Environment> getImplicitDefinitionFinder()
715:         {
716:                 return new ImplicitDefinitionFinder(this);
717:         }
718:
719:         @Override public IAnswer<Boolean> getUsedChecker()
720:         {
721:                 return new UsedChecker(this);
722:         }
723:
724:         @Override public IAnswer<Boolean> getPTypeFunctionChecker(String fromModule)
725:         {
726:                 return new PTypeFunctionChecker(this, fromModule);
727:         }
728:
729:         @Override public AnalysisAdaptor getUnusedChecker()
730:         {
731:                 return new UnusedChecker(this);
732:         }
733:
734:         @Override public IAnswer<PDefinition> getDereferer()
735:         {
736:                 return new Dereferer(this);
737:         }
738:
739:         @Override public IQuestion<NewQuestion> getDefinitionTypeResolver()
740:         {
741:                 return new DefinitionTypeResolver(this);
742:         }
743:
744:         @Override public QuestionAnswerAdaptor<String, Boolean> getMapBasisChecker()
745:         {
746:                 return new MapBasisChecker(this);
747:         }
748:
749:         @Override public QuestionAnswerAdaptor<String, SMapType> getMapTypeFinder()
750:         {
751:                 return new MapTypeFinder(this);
752:         }
753:
754:         @Override public QuestionAnswerAdaptor<String, SSeqType> getSeqTypeFinder()
755:         {
756:                 return new SeqTypeFinder(this);
757:         }
758:
759:         @Override public QuestionAnswerAdaptor<String, Boolean> getSeqBasisChecker()
760:         {
761:                 return new SeqBasisChecker(this);
762:         }
763:
764:         @Override public QuestionAnswerAdaptor<String, AOperationType> getOperationTypeFinder()
765:         {
766:                 return new OperationTypeFinder(this);
767:         }
768:
769:         @Override public QuestionAnswerAdaptor<String, Boolean> getOperationBasisChecker()
770:         {
771:                 return new OperationBasisChecker(this);
772:         }
773:
774:         @Override public QuestionAnswerAdaptor<String, Boolean> getSetBasisChecker()
775:         {
776:                 return new SetBasisChecker(this);
777:         }
778:
779:         @Override public QuestionAnswerAdaptor<String, SSetType> getSetTypeFinder()
780:         {
781:                 return new SetTypeFinder(this);
782:         }
783:
784:         @Override public QuestionAnswerAdaptor<String, Boolean> getRecordBasisChecker()
785:         {
786:                 return new RecordBasisChecker(this);
787:         }
788:
789:         @Override public QuestionAnswerAdaptor<String, Boolean> getTagBasisChecker()
790:         {
791:                 return new TagBasisChecker(this);
792:         }
793:
794:         @Override public QuestionAnswerAdaptor<String, ARecordInvariantType> getRecordTypeFinder()
795:         {
796:                 return new RecordTypeFinder(this);
797:         }
798:
799:         @Override public QuestionAnswerAdaptor<String, Boolean> getClassBasisChecker(
800:                         Environment env)
801:         {
802:                 return new ClassBasisChecker(this, env);
803:         }
804:
805:         @Override public QuestionAnswerAdaptor<String, AClassType> getClassTypeFinder(Environment env)
806:         {
807:                 return new ClassTypeFinder(this, env);
808:         }
809:
810:         @Override public QuestionAnswerAdaptor<String, AProductType> getProductTypeFinder()
811:         {
812:                 return new ProductTypeFinder(this);
813:         }
814:
815:         @Override public QuestionAnswerAdaptor<String, Boolean> getProductBasisChecker()
816:         {
817:                 return new ProductBasisChecker(this);
818:         }
819:
820:         @Override public QuestionAnswerAdaptor<String, AUnionType> getUnionTypeFinder()
821:         {
822:                 return new UnionTypeFinder(this);
823:         }
824:
825:         @Override public IQuestionAnswer<Object, Boolean> getTypeEqualityChecker()
826:         {
827:                 return new TypeEqualityChecker(this);
828:         }
829:
830:         @Override public IAnswer<String> getTypeDisplayer()
831:         {
832:                 return new TypeDisplayer(this);
833:         }
834:
835:         @Override public AnalysisAdaptor getTypeUnresolver()
836:         {
837:                 return new TypeUnresolver(this);
838:         }
839:
840:         @Override public IQuestionAnswer<AAccessSpecifierAccessSpecifier, Boolean> getNarrowerThanComparator()
841:         {
842:                 return new NarrowerThanComparator(this);
843:         }
844:
845:         @Override public QuestionAnswerAdaptor<String, Boolean> getUnionBasisChecker()
846:         {
847:                 return new UnionBasisChecker(this);
848:         }
849:
850:         @Override public IAnswer<AFunctionType> getFunctionTypeFinder()
851:         {
852:                 return new FunctionTypeFinder(this);
853:         }
854:
855:         @Override public IQuestionAnswer<org.overture.typechecker.utilities.type.ConcreateTypeImplementor.Newquestion, PType> getConcreateTypeImplementor()
856:         {
857:                 return new ConcreateTypeImplementor(this);
858:         }
859:
860:         @Override public IQuestionAnswer<org.overture.typechecker.utilities.type.PTypeResolver.Newquestion, PType> getPTypeResolver()
861:         {
862:                 return new PTypeResolver(this);
863:         }
864:
865:         @Override public IQuestionAnswer<String, PType> getPTypeFinder(String fromModule)
866:         {
867:                 return new PTypeFinder(this, fromModule);
868:         }
869:
870:         @Override public IQuestionAnswer<Integer, Boolean> getProductExtendedChecker(String fromModule)
871:         {
872:                 return new ProductExtendedChecker(this, fromModule);
873:         }
874:
875:         @Override public IQuestionAnswer<Integer, AProductType> getProductExtendedTypeFinder(String fromModule)
876:         {
877:                 return new ProductExtendedTypeFinder(this, fromModule);
878:         }
879:
880:         @Override public IQuestionAnswer<Class<? extends PType>, Boolean> getPTypeExtendedChecker(String fromModule)
881:         {
882:                 return new PTypeExtendedChecker(this, fromModule);
883:         }
884:
885:         @Override public IAnswer<Boolean> getVoidExistanceChecker()
886:         {
887:                 return new VoidExistanceChecker(this);
888:         }
889:
890:         @Override public IAnswer<Boolean> getVoidBasisChecker()
891:         {
892:                 return new VoidBasisChecker(this);
893:         }
894:
895:         @Override public IAnswer<PType> getPossibleTypeFinder()
896:         {
897:                 return new PossibleTypeFinder(this);
898:         }
899:
900:         @Override public IAnswer<Boolean> getSimplePatternChecker()
901:         {
902:                 return new SimplePatternChecker(this);
903:         }
904:
905:         @Override public IAnswer<Boolean> getAlwaysMatchingPatternChecker(String fromModule)
906:         {
907:                 return new AlwaysMatchingPatternChecker(this, fromModule);
908:         }
909:
910:         @Override public AnalysisAdaptor getPatternUnresolver()
911:         {
912:                 return new PatternUnresolver(this);
913:         }
914:
915:         @Override public IQuestion<org.overture.typechecker.utilities.pattern.PatternResolver.NewQuestion> getPatternResolver(String fromModule)
916:         {
917:                 return new PatternResolver(this, fromModule);
918:         }
919:
920:         @Override public IQuestionAnswer<org.overture.typechecker.utilities.pattern.AllDefinitionLocator.NewQuestion, List<PDefinition>> getAllDefinitionLocator(String fromModule)
921:         {
922:                 return new AllDefinitionLocator(this, fromModule);
923:         }
924:
925:         @Override public IAnswer<PType> getPossibleBindTypeFinder()
926:         {
927:                 return new PossibleBindTypeFinder(this);
928:         }
929:
930:         @Override public IAnswer<List<PMultipleBind>> getMultipleBindLister()
931:         {
932:                 return new MultipleBindLister(this);
933:         }
934:
935:         @Override public IAnswer<ILexNameToken> getPreNameFinder()
936:         {
937:                 return new PreNameFinder(this);
938:         }
939:
940:         @Override public IQuestionAnswer<LinkedList<PDefinition>, Collection<? extends PDefinition>> getExportDefinitionFinder()
941:         {
942:                 return new ExportDefinitionFinder(this);
943:         }
944:
945:         @Override public IAnswer<Collection<? extends PDefinition>> getExportDefinitionListFinder()
946:         {
947:                 return new ExportDefinitionListFinder(this);
948:         }
949:
950:         @Override public IQuestionAnswer<AModuleModules, List<PDefinition>> getImportDefinitionFinder()
951:         {
952:                 return new ImportDefinitionFinder(this);
953:         }
954:
955:         @Override public IAnswer<PTypeList> getComposeTypeCollector()
956:         {
957:                 return new ComposeTypeCollector();
958:         }
959:
960:         @Override public IQuestionAnswer<TypeCheckInfo, List<QualifiedDefinition>> getQualificationVisitor()
961:         {
962:                 return new QualificationVisitor();
963:         }
964:
965:         @Override public TypeComparator getTypeComparator()
966:         {
967:•                if (typeComp == null)
968:                 {
969:                         typeComp = new TypeComparator(this);
970:                 }
971:                 return typeComp;
972:
973:         }
974:
975:         @Override public LexNameTokenAssistant getLexNameTokenAssistant()
976:         {
977:•                if (lnt == null)
978:                 {
979:                         lnt = new LexNameTokenAssistant(this);
980:                 }
981:                 return lnt;
982:         }
983:
984:         @Override public SFunctionDefinitionAssistantTC createSFunctionDefinitionAssistant()
985:         {
986:•                if (sfd == null)
987:                 {
988:                         sfd = new SFunctionDefinitionAssistantTC(this);
989:                 }
990:                 return sfd;
991:         }
992:
993:         @Override public IAnswer<Boolean> getInstanceVariableChecker()
994:         {
995:                 return new InstanceVariableChecker(this);
996:         }
997:
998:         @Override
999:         public IAnswer<Boolean> getTypeDefinitionChecker()
1000:         {
1001:                 return new TypeDefinitionChecker(this);
1002:         }
1003:
1004:         @Override
1005:         public IAnswer<Boolean> getValueDefinitionChecker()
1006:         {
1007:                 return new ValueDefinitionChecker(this);
1008:         }
1009:
1010:         @Override
1011:         public IQuestionAnswer<FreeVarInfo, LexNameSet> getFreeVariablesChecker()
1012:         {
1013:                 return new FreeVariablesChecker(this);
1014: }
1015:
1016:         @Override public IQuestionAnswer<ILexLocation, Boolean> getIsOrderedVisitor()
1017:         {
1018:•                if (iOrdV == null)
1019:                 {
1020:                         iOrdV = new IsOrderedVisitor();
1021:                 }
1022:                 return iOrdV;
1023:         }
1024:
1025:         @Override public IQuestionAnswer<ILexLocation, Boolean> getIsEqVisitor()
1026:         {
1027:•                if (iEqV == null)
1028:                 {
1029:                         iEqV = new IsEqVisitor();
1030:                 }
1031:                 return iOrdV;
1032:         }
1033:
1034:         @Override public IQuestion<TypeCheckInfo> getMultipleEqualityChecker()
1035:         {
1036:•                if (mulEqCheckr == null)
1037:                 {
1038:                         mulEqCheckr = new MultipleEqualityChecker();
1039:                 }
1040:                 return mulEqCheckr;
1041:         }
1042: }