Package: SelfDefinitionFinder

SelfDefinitionFinder

nameinstructionbranchcomplexitylinemethod
SelfDefinitionFinder(ITypeCheckerAssistantFactory)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
createNewReturnValue(INode)
M: 9 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
createNewReturnValue(Object)
M: 9 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
defaultPDefinition(PDefinition)
M: 0 C: 7
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
defaultSClassDefinition(SClassDefinition)
M: 0 C: 20
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
static {...}
M: 2 C: 6
75%
M: 1 C: 1
50%
M: 1 C: 1
50%
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.utilities;
23:
24: import org.overture.ast.analysis.AnalysisException;
25: import org.overture.ast.analysis.AnswerAdaptor;
26: import org.overture.ast.definitions.PDefinition;
27: import org.overture.ast.definitions.SClassDefinition;
28: import org.overture.ast.factory.AstFactory;
29: import org.overture.ast.node.INode;
30: import org.overture.ast.typechecker.NameScope;
31: import org.overture.typechecker.assistant.ITypeCheckerAssistantFactory;
32:
33: /**
34: * This class implements a way to find the self definition from a node in the AST
35: *
36: * @author kel
37: */
38:•public class SelfDefinitionFinder extends AnswerAdaptor<PDefinition>
39: {
40:
41:         protected ITypeCheckerAssistantFactory af;
42:
43:         public SelfDefinitionFinder(ITypeCheckerAssistantFactory af)
44:         {
45:                 this.af = af;
46:         }
47:
48:         @Override
49:         public PDefinition defaultSClassDefinition(SClassDefinition classDefinition)
50:                         throws AnalysisException
51:         {
52:                 PDefinition def = AstFactory.newALocalDefinition(classDefinition.getLocation(), classDefinition.getName().getSelfName(), NameScope.LOCAL, af.createPDefinitionAssistant().getType(classDefinition));
53:                 af.createPDefinitionAssistant().markUsed(def);
54:                 return def;
55:         }
56:
57:         @Override
58:         public PDefinition defaultPDefinition(PDefinition node)
59:                         throws AnalysisException
60:         {
61:                 return node.getClassDefinition().apply(THIS);
62:         }
63:
64:         @Override
65:         public PDefinition createNewReturnValue(INode node)
66:         {
67:•                assert false : "should not happen";
68:                 return null;
69:         }
70:
71:         @Override
72:         public PDefinition createNewReturnValue(Object node)
73:         {
74:•                assert false : "should not happen";
75:                 return null;
76:         }
77: }