diff options
Diffstat (limited to 'java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/Data.java')
-rw-r--r-- | java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/Data.java | 200 |
1 files changed, 103 insertions, 97 deletions
diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/Data.java b/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/Data.java index 55a842af684c..b76e31197482 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/Data.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/Data.java @@ -52,103 +52,109 @@ enum Value { Bot, NotNull, Null, True, False, Top } -interface Direction {} - -final class In implements Direction { - static final int NOT_NULL = 0; - static final int NULLABLE = 1; - final int paramIndex; - final int nullityMask; - - In(int paramIndex, int nullityMask) { - this.paramIndex = paramIndex; - this.nullityMask = nullityMask; - } - - @Override - public String toString() { - return "In " + paramIndex; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - In in = (In) o; - if (paramIndex != in.paramIndex) return false; - if (nullityMask != in.nullityMask) return false; - return true; - } - - @Override - public int hashCode() { - return 31*paramIndex + nullityMask; - } - - public int paramId() { - return paramIndex; - } - -} - -final class InOut implements Direction { - final int paramIndex; - final Value inValue; - - InOut(int paramIndex, Value inValue) { - this.paramIndex = paramIndex; - this.inValue = inValue; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - InOut inOut = (InOut) o; - - if (paramIndex != inOut.paramIndex) return false; - if (inValue != inOut.inValue) return false; - - return true; - } - - @Override - public int hashCode() { - int result = paramIndex; - result = 31 * result + inValue.ordinal(); - return result; - } - - @Override - public String toString() { - return "InOut " + paramIndex + " " + inValue.toString(); - } - - public int paramId() { - return paramIndex; - } - - public int valueId() { - return inValue.ordinal(); - } -} - -final class Out implements Direction { - @Override - public String toString() { - return "Out"; - } - - @Override - public int hashCode() { - return 1; - } - - @Override - public boolean equals(Object obj) { - return obj instanceof Out; - } +interface Direction { + final class In implements Direction { + static final int NOT_NULL = 0; + static final int NULLABLE = 1; + final int paramIndex; + final int nullityMask; + + In(int paramIndex, int nullityMask) { + this.paramIndex = paramIndex; + this.nullityMask = nullityMask; + } + + @Override + public String toString() { + return "In " + paramIndex; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + In in = (In)o; + if (paramIndex != in.paramIndex) return false; + if (nullityMask != in.nullityMask) return false; + return true; + } + + @Override + public int hashCode() { + return 31 * paramIndex + nullityMask; + } + + public int paramId() { + return paramIndex; + } + } + + final class InOut implements Direction { + final int paramIndex; + final Value inValue; + + InOut(int paramIndex, Value inValue) { + this.paramIndex = paramIndex; + this.inValue = inValue; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + InOut inOut = (InOut)o; + + if (paramIndex != inOut.paramIndex) return false; + if (inValue != inOut.inValue) return false; + + return true; + } + + @Override + public int hashCode() { + int result = paramIndex; + result = 31 * result + inValue.ordinal(); + return result; + } + + @Override + public String toString() { + return "InOut " + paramIndex + " " + inValue.toString(); + } + + public int paramId() { + return paramIndex; + } + + public int valueId() { + return inValue.ordinal(); + } + } + + Direction Out = new Direction() { + @Override + public String toString() { + return "Out"; + } + + @Override + public int hashCode() { + return -1; + } + }; + + Direction NullableOut = new Direction() { + @Override + public String toString() { + return "NullableOut"; + } + + @Override + public int hashCode() { + return -2; + } + }; } final class Key { |