if (other instanceof RubyFixnum) { return subtractFixnum(context, (RubyFixnum)other); } return subtractOther(context, other);
if (other instanceof RubyFixnum) { return addFixnum(context, (RubyFixnum)other); } return addOther(context, other);
Clone fragments detected by clone detection tool
File path: /jruby-1.4.0/src/org/jruby/RubyFixnum.java File path: /jruby-1.4.0/src/org/jruby/RubyFixnum.java
Method name: IRubyObject op_minus(ThreadContext, IRubyObject) Method name: IRubyObject op_plus(ThreadContext, IRubyObject)
Number of AST nodes: 3 Number of AST nodes: 3
1
if (other instanceof RubyFixnum) {
1
if (other instanceof RubyFixnum) {
2
            return subtractFixnum(context, (RubyFixnum)other);
2
            return addFixnum(context, (RubyFixnum)other);
3
        }
3
        }
4
        return subtractOther(context, other);
4
        return addOther(context, other);
Summary
Number of common nesting structure subtrees1
Number of refactorable cases0
Number of non-refactorable cases1
Time elapsed for finding largest common nesting structure subtrees (ms)0.1
Clones locationClones are declared in the same class
Number of node comparisons5
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements3
    Number of unmapped statements in the first code fragment0
    Number of unmapped statements in the second code fragment0
    Time elapsed for statement mapping (ms)1.0
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    1
    if (other instanceof RubyFixnum)
    1
    if (other instanceof RubyFixnum)
    2
    return subtractFixnum(context, (RubyFixnum)other);
    2
    return subtractFixnum(context, (RubyFixnum)other);
    2
    return addFixnum(context, (RubyFixnum)other);
    Differences
    Expression1Expression2Difference
    subtractFixnumaddFixnumMETHOD_INVOCATION_NAME_MISMATCH
    Preondition Violations
    Expression subtractFixnum(context,(RubyFixnum)other) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    • Inline private method subtractFixnum
    Expression addFixnum(context,(RubyFixnum)other) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    • Inline private method addFixnum
    2
    return addFixnum(context, (RubyFixnum)other);
    3
    return subtractOther(context, other);
    3
    return subtractOther(context, other);
    3
    return addOther(context, other);
    Differences
    Expression1Expression2Difference
    subtractOtheraddOtherMETHOD_INVOCATION_NAME_MISMATCH
    Preondition Violations
    Expression subtractOther(context,other) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    • Inline private method subtractOther
    Expression addOther(context,other) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    • Inline private method addOther
    3
    return addOther(context, other);
    Precondition Violations (4)
    Row Violation
    1Expression subtractFixnum(context,(RubyFixnum)other) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    2Expression addFixnum(context,(RubyFixnum)other) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    3Expression subtractOther(context,other) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    4Expression addOther(context,other) cannot be parameterized, because it has dependencies to/from statements that will be extracted