This commit is contained in:
Julian Dolby 2017-08-15 12:39:27 -04:00
commit a92b881c22
31 changed files with 65 additions and 77 deletions

View File

@ -79,7 +79,7 @@ org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=error
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=error
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=error
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=error
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=error
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

View File

@ -216,9 +216,7 @@ public class JavaCAst2IRTranslator extends AstTranslator {
// code bodies, so we may see other things than TYPE_ENTITY here.
IClass owner = loader.lookupClass(makeType(topEntity.getType()).getName());
if (owner == null) {
assert owner != null : makeType(topEntity.getType()).getName() + " not found in " + loader;
}
assert owner != null : makeType(topEntity.getType()).getName() + " not found in " + loader;
((JavaSourceLoaderImpl) loader).defineField(n, owner);
}
@ -231,9 +229,7 @@ public class JavaCAst2IRTranslator extends AstTranslator {
CAstType owningType = methodType.getDeclaringType();
IClass owner = loader.lookupClass(makeType(owningType).getName());
if (owner == null) {
assert owner != null : makeType(owningType).getName().toString() + " not found in " + loader;
}
assert owner != null : makeType(owningType).getName().toString() + " not found in " + loader;
((JavaSourceLoaderImpl) loader).defineAbstractFunction(N, owner);
}
@ -249,9 +245,7 @@ public class JavaCAst2IRTranslator extends AstTranslator {
TypeName typeName = makeType(owningType).getName();
IClass owner = loader.lookupClass(typeName);
if (owner == null) {
assert owner != null : typeName.toString() + " not found in " + loader;
}
assert owner != null : typeName.toString() + " not found in " + loader;
symtab.getConstant(0);
symtab.getNullConstant();

View File

@ -79,7 +79,7 @@ org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=error
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=error
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=error
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=error
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=error
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

View File

@ -539,8 +539,7 @@ public class JavaScriptConstructorFunctions {
assert fcls != null : "cannot find class for " + fileName;
if (fcls != null)
return makeFunctionConstructor(cls, fcls);
return makeFunctionConstructor(cls, fcls);
} catch (IOException e) {

View File

@ -85,17 +85,17 @@ org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=error
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=enabled
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=enabled
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=error
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=error
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=error
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=error
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=error
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=error
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore

View File

@ -12,7 +12,6 @@ package com.ibm.wala.cast.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Assert;
@ -35,7 +34,6 @@ public class TestCAstPattern extends WalaTestCase {
private final Map<String, Object> testNameMap = new HashMap<>();
@Override
@SuppressWarnings("unchecked")
public CAstNode makeNode(int kind, CAstNode children[]) {
if (kind == NAME_ASSERTION_SINGLE || kind == NAME_ASSERTION_MULTI) {
assert children.length == 2;
@ -47,11 +45,13 @@ public class TestCAstPattern extends WalaTestCase {
if (kind == NAME_ASSERTION_SINGLE) {
testNameMap.put(name, children[1]);
} else {
if (!testNameMap.containsKey(name)) {
testNameMap.put(name, new ArrayList<>());
@SuppressWarnings("unchecked")
ArrayList<CAstNode> nodeList = (ArrayList<CAstNode>) testNameMap.get(name);
if (nodeList == null) {
nodeList = new ArrayList<>();
testNameMap.put(name, nodeList);
}
((List<CAstNode>) testNameMap.get(children[0].getValue())).add(children[1]);
nodeList.add(children[1]);
}
return children[1];
} else {

View File

@ -100,17 +100,17 @@ public abstract class TestCAstTranslator extends WalaTestCase {
}
}
Pair<Object, Object>[] instanceMethods = (Pair[]) entry[4];
Pair<?, ?>[] instanceMethods = (Pair[]) entry[4];
if (instanceMethods != null) {
for (int i = 0; i < instanceMethods.length; i++) {
this.instanceMethods.put(Pair.make(clsName, instanceMethods[i].fst), instanceMethods[i].snd);
this.instanceMethods.put(Pair.make(clsName, (Object) instanceMethods[i].fst), instanceMethods[i].snd);
}
}
Pair<Object, Object>[] staticMethods = (Pair[]) entry[5];
Pair<?, ?>[] staticMethods = (Pair[]) entry[5];
if (staticMethods != null) {
for (int i = 0; i < staticMethods.length; i++) {
this.staticMethods.put(Pair.make(clsName, staticMethods[i].fst), staticMethods[i].snd);
this.staticMethods.put(Pair.make(clsName, (Object) staticMethods[i].fst), staticMethods[i].snd);
}
}
}
@ -177,7 +177,7 @@ public abstract class TestCAstTranslator extends WalaTestCase {
Assert.assertTrue("found class " + cls.getName().toString(), classes.contains(cls.getName().toString()));
if (cls.getSuperclass() == null) {
Assert.assertTrue(cls.getName() + " has no superclass", supers.get(cls.getName()) == null);
Assert.assertTrue(cls.getName() + " has no superclass", supers.get(cls.getName().toString()) == null);
} else {
Assert.assertTrue("super of " + cls.getName() + " is " + cls.getSuperclass().getName(), supers
.get(cls.getName().toString()).equals(cls.getSuperclass().getName().toString()));

View File

@ -97,7 +97,7 @@ org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=error
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=error
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=error
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=error
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore

View File

@ -41,13 +41,14 @@ public class CAstCloner extends CAstBasicRewriter {
* what is the hack here? --MS
*/
protected CAstNode copyNodesHackForEclipse(CAstNode root, final CAstControlFlowMap cfg, NonCopyingContext c, Map<Pair<CAstNode,NoKey>, CAstNode> nodeMap) {
final Pair<CAstNode, NoKey> pairKey = Pair.make(root, c.key());
if (root instanceof CAstOperator) {
nodeMap.put(Pair.make(root, c.key()), root);
nodeMap.put(pairKey, root);
return root;
} else if (root.getValue() != null) {
CAstNode copy = Ast.makeConstant(root.getValue());
assert !nodeMap.containsKey(root);
nodeMap.put(Pair.make(root, c.key()), copy);
assert !nodeMap.containsKey(pairKey);
nodeMap.put(pairKey, copy);
return copy;
} else {
CAstNode newChildren[] = new CAstNode[root.getChildCount()];
@ -57,8 +58,8 @@ public class CAstCloner extends CAstBasicRewriter {
}
CAstNode copy = Ast.makeNode(root.getKind(), newChildren);
assert !nodeMap.containsKey(root);
nodeMap.put(Pair.make(root, c.key()), copy);
assert !nodeMap.containsKey(pairKey);
nodeMap.put(pairKey, copy);
return copy;
}
}

View File

@ -183,7 +183,7 @@ public class AnnotationTest extends WalaTestCase {
IMethod methodUnderTest = cha.resolveMethod(methodRefUnderTest);
harness.assertTrue(methodRefUnderTest.toString() + " not found", methodUnderTest != null);
harness.assertTrue(methodUnderTest + " must be bytecode method", methodUnderTest instanceof IBytecodeMethod);
IBytecodeMethod<IInstruction> IBytecodeMethodUnderTest = (IBytecodeMethod<IInstruction>) methodUnderTest;
IBytecodeMethod<?> IBytecodeMethodUnderTest = (IBytecodeMethod<?>) methodUnderTest;
Collection<Annotation>[] parameterAnnotations = IBytecodeMethodUnderTest.getParameterAnnotations();
harness.assertEquals(expected.length, parameterAnnotations.length);

View File

@ -90,7 +90,7 @@ org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=error
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=error
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
@ -107,7 +107,7 @@ org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=error
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=error
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=error
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore

View File

@ -118,7 +118,7 @@ public class ArrayBoundsGraph extends DirectedHyperGraph<Integer> {
for (DirectedHyperEdge<Integer> edge:constantNode.getOutEdges()) {
if (!edge.getDestination().contains(helper2)) {
edge.getSource().remove(constant);
edge.getSource().remove(constantNode);
edge.getSource().add(helper1);
}
}

View File

@ -268,9 +268,7 @@ public class BasicHeapGraph<T extends InstanceKey> extends HeapGraphImpl<T> {
InstanceKey I = (InstanceKey) N;
TypeReference T = I.getConcreteType().getReference();
if (T == null) {
assert T != null : "null concrete type from " + I.getClass();
}
assert T != null : "null concrete type from " + I.getClass();
if (T.isArrayType()) {
PointerKey p = getHeapModel().getPointerKeyForArrayContents(I);
if (p == null || !nodeManager.containsNode(p)) {
@ -280,9 +278,7 @@ public class BasicHeapGraph<T extends InstanceKey> extends HeapGraphImpl<T> {
}
} else {
IClass klass = getHeapModel().getClassHierarchy().lookupClass(T);
if (klass == null) {
assert klass != null : "null klass for type " + T;
}
assert klass != null : "null klass for type " + T;
MutableSparseIntSet result = MutableSparseIntSet.makeEmpty();
for (Iterator<IField> it = klass.getAllInstanceFields().iterator(); it.hasNext();) {
IField f = it.next();

View File

@ -355,7 +355,7 @@ public class ShrikeCFG extends AbstractCFG<IInstruction, ShrikeCFG.BasicBlock> i
if (!exceptionTypes.isEmpty()) {
addExceptionalEdgeTo(b);
exceptionTypes.clear();
caughtException = null;
assert caughtException == null;
}
}
if (caughtException != null) {

View File

@ -191,7 +191,7 @@ public class CodeScanner {
return false;
}
private static Collection<CallSiteReference> getCallSitesFromShrikeBT(IBytecodeMethod M) throws InvalidClassFileException {
private static Collection<CallSiteReference> getCallSitesFromShrikeBT(IBytecodeMethod<?> M) throws InvalidClassFileException {
return M.getCallSites();
}

View File

@ -39,7 +39,7 @@ public class ShrikeIRFactory implements IRFactory<IBytecodeMethod<IInstruction>>
public final static boolean buildLocalMap = true;
public ControlFlowGraph makeCFG(final IBytecodeMethod method) {
public ControlFlowGraph makeCFG(final IBytecodeMethod<IInstruction> method) {
return ShrikeCFG.make(method);
}

View File

@ -78,9 +78,7 @@ public class ClassBasedInstanceKeys implements InstanceKeyFactory {
if (DEBUG) {
System.err.println(("type: " + type));
}
if (type == null) {
assert type != null : "null type for " + allocation;
}
assert type != null : "null type for " + allocation;
int i = 0;
while (i <= dim) {
i++;

View File

@ -756,9 +756,7 @@ public class ClassHierarchy implements IClassHierarchy {
return b;
} else {
Node n = map.get(b.getReference());
if (n == null) {
assert n != null : "null n for " + b;
}
assert n != null : "null n for " + b;
Set<IClass> superB;
superB = getSuperclasses(b);
IClass aa = a;

View File

@ -18,6 +18,7 @@ import com.ibm.wala.classLoader.ShrikeIRFactory;
import com.ibm.wala.classLoader.SyntheticMethod;
import com.ibm.wala.ipa.callgraph.Context;
import com.ibm.wala.ipa.summaries.SyntheticIRFactory;
import com.ibm.wala.shrikeBT.IInstruction;
import com.ibm.wala.util.debug.Assertions;
/**
@ -42,7 +43,9 @@ public class DefaultIRFactory implements IRFactory<IMethod> {
if (method.isSynthetic()) {
return syntheticFactory.makeCFG((SyntheticMethod) method);
} else if (method instanceof IBytecodeMethod) {
return shrikeFactory.makeCFG((IBytecodeMethod) method);
@SuppressWarnings("unchecked")
final IBytecodeMethod<IInstruction> castMethod = (IBytecodeMethod) method;
return shrikeFactory.makeCFG(castMethod);
} else {
Assertions.UNREACHABLE();
return null;
@ -61,7 +64,9 @@ public class DefaultIRFactory implements IRFactory<IMethod> {
if (method.isSynthetic()) {
return syntheticFactory.makeIR((SyntheticMethod) method, c, options);
} else if (method instanceof IBytecodeMethod) {
return shrikeFactory.makeIR((IBytecodeMethod) method, c, options);
@SuppressWarnings("unchecked")
final IBytecodeMethod<IInstruction> castMethod = (IBytecodeMethod<IInstruction>) method;
return shrikeFactory.makeIR(castMethod, c, options);
} else {
Assertions.UNREACHABLE();
return null;

View File

@ -65,9 +65,7 @@ public abstract class SSAInvokeInstruction extends SSAAbstractInvokeInstruction
nExpected += site.getDeclaredTarget().getNumberOfParameters();
if (nExpected > 0) {
if (params == null) {
assert params != null : "null params for " + site;
}
assert params != null : "null params for " + site;
if (params.length != nExpected) {
assert params.length == nExpected : "wrong number of params for " + site + " Expected " + nExpected + " got "
+ params.length;

View File

@ -80,7 +80,7 @@ org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=error
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=error
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=error
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=error
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=error
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

View File

@ -350,7 +350,7 @@ public class DexCFG extends AbstractCFG<Instruction, DexCFG.BasicBlock> implemen
if (!exceptionTypes.isEmpty()) {
addExceptionalEdgeTo(b);
exceptionTypes.clear();
caughtException = null;
assert caughtException == null;
}
}
if (caughtException != null) {

View File

@ -259,7 +259,7 @@ public class Intent implements ContextItem, Comparable<Intent> {
private static boolean isSystemService(Intent intent) {
assert (intent.action != null);
return (intent != null && intent.action != null && (intent.action.getVal(0) != 'L') && (intent.action.rIndex((byte) '/') < 0) && (intent.action.rIndex((byte) '.') < 0));
return (intent.action.getVal(0) != 'L') && (intent.action.rIndex((byte) '/') < 0) && (intent.action.rIndex((byte) '.') < 0);
}
/**

View File

@ -79,7 +79,7 @@ org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=error
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=error
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=error
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=error
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

View File

@ -65,7 +65,7 @@ org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=error
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=error
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=error
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=error
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

View File

@ -129,15 +129,15 @@ public abstract class FlowType<E extends ISSABasicBlock> {
@SuppressWarnings("unused")
private boolean compareBlocks(BasicBlockInContext<E> a,
BasicBlockInContext<E> b) {
if (null == a || null == b) {
return false;
}
// delegate to the defined implementation, but only if it's true.
if (a.equals(b)) {
return true;
}
if (null == a || null == b) {
return false;
}
if (a.getNumber() != b.getNumber()) {
return false;
}

View File

@ -305,9 +305,8 @@ public class EntryPoints {
for (String[] intent: ActivityIntentList) {
//method = IntentToMethod(intent[0]);
method = "onCreate(Landroid/os/Bundle;)V";
if (method != null)
im = cha.resolveMethod(StringStuff.makeMethodReference(intent[1]+"."+method));
im = cha.resolveMethod(StringStuff.makeMethodReference(intent[1]+"."+method));
if (im!=null)
entries.add(new DefaultEntrypoint(im,cha));
@ -316,9 +315,8 @@ public class EntryPoints {
//Seems that every broadcast receiver can be an entrypoints?
// method = IntentToMethod(intent[0]);
method = "onReceive(Landroid/content/Context;Landroid/content/Intent;)V";
if (method != null)
im = cha.resolveMethod(StringStuff.makeMethodReference(intent[1]+"."+method));
im = cha.resolveMethod(StringStuff.makeMethodReference(intent[1]+"."+method));
if (im!=null)
entries.add(new DefaultEntrypoint(im,cha));
}

View File

@ -89,7 +89,7 @@ org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.rawTypeReference=error
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=error
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=error
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=error
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=error
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

View File

@ -194,7 +194,7 @@ public class ClassPrinter {
int count = 0;
for (int j = 0; j < map.length; j++) {
String line2 = " " + j + ": " + map[j];
if (line == null || line2 == null || !line2.substring(line2.indexOf(':')).equals(line.substring(line.indexOf(':')))) {
if (line == null || !line2.substring(line2.indexOf(':')).equals(line.substring(line.indexOf(':')))) {
if (count > 1) {
w.write(" (" + count + " times)\n");
} else if (count > 0) {

View File

@ -79,7 +79,7 @@ org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=error
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=error
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=error
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

View File

@ -109,8 +109,9 @@ public class OrdinalSet<T> implements Iterable<T> {
if ((a == null && b == null) || a == b || (a.mapping == b.mapping && a.S == b.S)) {
return true;
}
if (a != null && b != null && a.size() == b.size()) {
assert a != null && b != null;
if (a.size() == b.size()) {
if (a.mapping == b.mapping || (a.mapping != null && b.mapping != null && a.mapping.equals(b.mapping))) {
return a.S == b.S || (a.S != null && b.S != null && a.S.sameValue(b.S));
}