switch (node.getNodeType()) { case CLASSVARASGNNODE: case CLASSVARDECLNODE: case CONSTDECLNODE: case DASGNNODE: case GLOBALASGNNODE: case LOCALASGNNODE: case MULTIPLEASGNNODE: case OPASGNNODE: case OPELEMENTASGNNODE: case DVARNODE: case FALSENODE: case TRUENODE: case LOCALVARNODE: case MATCH2NODE: case MATCH3NODE: case NILNODE: case SELFNODE: // all these types are immediately considered "defined" return false; default: return true; }
switch (node.getNodeType()) { case CLASSVARASGNNODE: case CLASSVARDECLNODE: case CONSTDECLNODE: case DASGNNODE: case GLOBALASGNNODE: case LOCALASGNNODE: case MULTIPLEASGNNODE: case OPASGNNODE: case OPELEMENTASGNNODE: case DVARNODE: case FALSENODE: case TRUENODE: case LOCALVARNODE: case MATCH2NODE: case MATCH3NODE: case NILNODE: case SELFNODE: // all these types are immediately considered "defined" return false; default: return true; }
Clone fragments detected by clone detection tool
File path: /jruby-1.4.0/src/org/jruby/compiler/ASTCompiler.java File path: /jruby-1.4.0/src/org/jruby/compiler/ir/IR_Builder.java
Method name: boolean needsDefinitionCheck(Node) Method name: boolean needsDefinitionCheck(Node)
Number of AST nodes: 21 Number of AST nodes: 21
1
switch (node.getNodeType()) {
1
switch (node.getNodeType()) {
2
        case CLASSVARASGNNODE:
2
        case CLASSVARASGNNODE:
3
        case CLASSVARDECLNODE:
3
        case CLASSVARDECLNODE:
4
        case CONSTDECLNODE:
4
        case CONSTDECLNODE:
5
        case DASGNNODE:
5
        case DASGNNODE:
6
        case GLOBALASGNNODE:
6
        case GLOBALASGNNODE:
7
        case LOCALASGNNODE:
7
        case LOCALASGNNODE:
8
        case MULTIPLEASGNNODE:
8
        case MULTIPLEASGNNODE:
9
        case OPASGNNODE:
9
        case OPASGNNODE:
10
        case OPELEMENTASGNNODE:
10
        case OPELEMENTASGNNODE:
11
        case DVARNODE:
11
        case DVARNODE:
12
        case FALSENODE:
12
        case FALSENODE:
13
        case TRUENODE:
13
        case TRUENODE:
14
        case LOCALVARNODE:
14
        case LOCALVARNODE:
15
        case MATCH2NODE:
15
        case MATCH2NODE:
16
        case MATCH3NODE:
16
        case MATCH3NODE:
17
        case NILNODE:
17
        case NILNODE:
18
        case SELFNODE:
18
        case SELFNODE:
19
            // all these types are immediately considered "defined"
19
            // all these types are immediately considered "defined"
20
            return false;
20
            return false;
21
        default:
21
        default:
22
            return true;
22
            return true;
23
        }
23
        }
Summary
Number of common nesting structure subtrees1
Number of refactorable cases1
Number of non-refactorable cases0
Time elapsed for finding largest common nesting structure subtrees (ms)0.3
Clones locationClones are in different classes
Number of node comparisons213
  1. {Refactorable}
    Mapping Summary
    Number of mapped statements21
    Number of unmapped statements in the first code fragment0
    Number of unmapped statements in the second code fragment0
    Time elapsed for statement mapping (ms)7.0
    Clone typeType 1
    Mapped Statements
    ID Statement ID Statement
    1
    switch (node.getNodeType())
    1
    switch (node.getNodeType())
    2
    case CLASSVARASGNNODE:
    2
    case CLASSVARASGNNODE:
    3
    case CLASSVARDECLNODE:
    3
    case CLASSVARDECLNODE:
    4
    case CONSTDECLNODE:
    4
    case CONSTDECLNODE:
    5
    case DASGNNODE:
    5
    case DASGNNODE:
    6
    case GLOBALASGNNODE:
    6
    case GLOBALASGNNODE:
    7
    case LOCALASGNNODE:
    7
    case LOCALASGNNODE:
    8
    case MULTIPLEASGNNODE:
    8
    case MULTIPLEASGNNODE:
    9
    case OPASGNNODE:
    9
    case OPASGNNODE:
    10
    case OPELEMENTASGNNODE:
    10
    case OPELEMENTASGNNODE:
    11
    case DVARNODE:
    11
    case DVARNODE:
    12
    case FALSENODE:
    12
    case FALSENODE:
    13
    case TRUENODE:
    13
    case TRUENODE:
    14
    case LOCALVARNODE:
    14
    case LOCALVARNODE:
    15
    case MATCH2NODE:
    15
    case MATCH2NODE:
    16
    case MATCH3NODE:
    16
    case MATCH3NODE:
    17
    case NILNODE:
    17
    case NILNODE:
    18
    case SELFNODE:
    18
    case SELFNODE:
    19
    return false;
    19
    return false;
    20
    default:
    20
    default:
    21
    return true;
    21
    return true;
    Precondition Violations (0)
    Row Violation