Package: GeneratedVarComparison

GeneratedVarComparison

nameinstructionbranchcomplexitylinemethod
GeneratedVarComparison(String[], IRInfo, String)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
mustHandleLexIdentifierToken(LexIdentifierToken)
M: 0 C: 2
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
mustHandleNameToken(ILexNameToken)
M: 2 C: 47
96%
M: 1 C: 9
90%
M: 1 C: 5
83%
M: 1 C: 10
91%
M: 0 C: 1
100%

Coverage

1: /*
2: * #%~
3: * VDM Code Generator
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.codegen.analysis.violations;
23:
24: import org.overture.ast.definitions.PDefinition;
25: import org.overture.ast.definitions.SFunctionDefinition;
26: import org.overture.ast.definitions.SOperationDefinition;
27: import org.overture.ast.intf.lex.ILexNameToken;
28: import org.overture.ast.lex.LexIdentifierToken;
29: import org.overture.codegen.ir.IRInfo;
30: import org.overture.typechecker.assistant.definition.PDefinitionAssistantTC;
31:
32: public class GeneratedVarComparison extends NamingComparison
33: {
34:         public GeneratedVarComparison(String[] names, IRInfo info,
35:                         String correctionPrefix)
36:         {
37:                 super(names, info, correctionPrefix);
38:         }
39:
40:         @Override
41:         public boolean mustHandleNameToken(ILexNameToken nameToken)
42:         {
43:                 PDefinitionAssistantTC defAssistant = irInfo.getTcFactory().createPDefinitionAssistant();
44:
45:•                if (irInfo.getAssistantManager().getTypeAssistant().getTypeDef(nameToken, defAssistant) != null)
46:                 {
47:                         return false;
48:                 }
49:
50:                 PDefinition def = nameToken.getAncestor(PDefinition.class);
51:
52:•                if (def instanceof SOperationDefinition
53:                                 || def instanceof SFunctionDefinition)
54:                 {
55:                         return false;
56:                 }
57:
58:•                for (String name : this.getNames())
59:                 {
60:•                        if (nameToken.getName().startsWith(name))
61:                         {
62:                                 return true;
63:                         }
64:                 }
65:
66:                 return false;
67:         }
68:
69:         @Override
70:         public boolean mustHandleLexIdentifierToken(LexIdentifierToken lexId)
71:         {
72:                 return false;
73:         }
74: }