From 24d17f4eed790cd2fe29a3eee2b68dea230d2005 Mon Sep 17 00:00:00 2001 From: Ben Liblit Date: Wed, 15 Jul 2026 15:56:10 -0400 Subject: [PATCH] Allow `Assertions.UNREACHABLE(...)` in expressions Previously, the various overloads of `Assertions.UNREACHABLE(...)` returned `void`. Therefore, calls to these methods could be used as statements but not expressions. That restriction led to many code fragments like the following: ```java Assertions.UNREACHABLE(); return null; ``` An unfortunate side effect of that style was to make many methods appear to return nullable values even though the `return null` statement could never be reached. Now the `Asserions.UNREACHABLE(...)` methods statically claim to return a value of any arbitrary type. In reality, they will never return at all; each such method always throws an exception. However, by _pretending_ to return an arbitrarily typed value, we can now replace the above code pattern with: ```java return Assertions.UNREACHABLE(); ``` This change should help us recognize that some methods can never return `null`, even though they contain unreachable code. This change was inspired by several standard Kotlin features. The `TODO()`, `TODO(String)`, and `error(Any)` functions all return type `Nothing`, which is a subtype of every other type. Kotlin's `throw ...` construct is also an expression (not a statement) with static type `Nothing`. Also add JetBrains `@Contract` annotations to `Asserions.UNREACHABLE(...)` methods declaring that they always "fail" (i.e., throw exceptions) regardless of the arguments passed to them. Some static analysis tools may benefit from this information. --- .markdownlint-cli2.yaml | 3 + RELEASE-NOTES.md | 31 ++++ .../jdt/FakeExceptionTypeBinding.java | 174 ++++++------------ .../java/translator/jdt/JDT2CAstUtils.java | 57 +++--- .../translator/jdt/JDTIdentityMapper.java | 3 +- .../jdt/JDTJava2CAstTranslator.java | 49 ++--- ...AstJavaSSAPropagationCallGraphBuilder.java | 3 +- .../java/loader/JavaSourceLoaderImpl.java | 12 +- .../translator/JavaCAst2IRTranslator.java | 3 +- .../js/translator/RhinoToAstTranslator.java | 6 +- .../js/client/JavaScriptAnalysisEngine.java | 3 +- .../extraction/CAstRewriterExt.java | 3 +- .../cast/js/translator/JSAstTranslator.java | 3 +- .../JavaScriptTranslatorToCAst.java | 9 +- .../cast/ipa/callgraph/CAstAnalysisScope.java | 12 +- .../ipa/cha/CrossLanguageClassHierarchy.java | 3 +- .../java/com/ibm/wala/cast/ir/cfg/Util.java | 3 +- .../cast/ir/ssa/AstConsumeInstruction.java | 3 +- .../cast/ir/ssa/AstIsDefinedInstruction.java | 6 +- .../cast/ir/ssa/analysis/LiveAnalysis.java | 3 +- .../cast/ir/translator/AbstractEntity.java | 3 +- .../cast/ir/translator/AstTranslator.java | 12 +- .../cast/loader/CAstAbstractModuleLoader.java | 6 +- .../com/ibm/wala/cast/util/CAstPattern.java | 6 +- .../analysis/pointers/BasicHeapGraph.java | 15 +- .../AbstractReflectionInterpreter.java | 3 +- .../reflection/FactoryBypassInterpreter.java | 18 +- .../GetMethodContextInterpreter.java | 3 +- .../JavaLangClassContextInterpreter.java | 3 +- .../wala/analysis/typeInference/ConeType.java | 3 +- .../analysis/typeInference/PointType.java | 3 +- .../java/com/ibm/wala/cfg/AbstractCFG.java | 3 +- .../main/java/com/ibm/wala/cfg/ShrikeCFG.java | 6 +- core/src/main/java/com/ibm/wala/cfg/Util.java | 6 +- .../AbstractNestedJarFileModule.java | 3 +- .../wala/classLoader/AbstractURLModule.java | 6 +- .../com/ibm/wala/classLoader/ArrayClass.java | 15 +- .../wala/classLoader/CallSiteReference.java | 12 +- .../com/ibm/wala/classLoader/FileModule.java | 6 +- .../ibm/wala/classLoader/JarFileEntry.java | 3 +- .../ibm/wala/classLoader/JarFileModule.java | 3 +- .../ibm/wala/classLoader/JarStreamModule.java | 3 +- .../ibm/wala/classLoader/ShrikeBTMethod.java | 6 +- .../ibm/wala/classLoader/ShrikeCTMethod.java | 6 +- .../com/ibm/wala/classLoader/ShrikeClass.java | 3 +- .../wala/core/util/strings/UTF8Convert.java | 3 +- .../dataflow/IFDS/BackwardsSupergraph.java | 6 +- .../wala/dataflow/IFDS/ICFGSupergraph.java | 9 +- .../SimpleDemandPointerFlowGraph.java | 9 +- .../ibm/wala/demandpa/util/ArrayContents.java | 24 +-- .../wala/escape/LocalLiveRangeAnalysis.java | 10 +- .../com/ibm/wala/examples/drivers/PDFSDG.java | 6 +- .../ibm/wala/ipa/callgraph/AnalysisScope.java | 3 +- .../ibm/wala/ipa/callgraph/ContextUtil.java | 3 +- ...ntextInsensitiveCHAContextInterpreter.java | 3 +- .../ipa/callgraph/impl/FakeRootClass.java | 3 +- .../propagation/PointerAnalysisImpl.java | 14 +- .../propagation/PointerKeyComparator.java | 3 +- .../propagation/PropagationGraph.java | 6 +- .../rta/ContextInsensitiveRTAInterpreter.java | 9 +- .../propagation/rta/RTASelectorKey.java | 3 +- .../propagation/rta/TypeBasedHeapModel.java | 18 +- .../rta/TypeBasedPointerAnalysis.java | 3 +- .../callgraph/util/CallGraphSearchUtil.java | 6 +- .../ipa/cfg/AbstractInterproceduralCFG.java | 3 +- .../com/ibm/wala/ipa/cha/ClassHierarchy.java | 6 +- .../com/ibm/wala/ipa/modref/GenReach.java | 3 +- .../ibm/wala/ipa/slicer/HeapReachingDefs.java | 30 +-- .../java/com/ibm/wala/ipa/slicer/PDG.java | 18 +- .../java/com/ibm/wala/ipa/slicer/SDG.java | 12 +- .../ibm/wala/ipa/slicer/SDGSupergraph.java | 36 ++-- .../ibm/wala/ipa/slicer/SliceFunctions.java | 3 +- .../com/ibm/wala/ipa/slicer/SlicerUtil.java | 6 +- .../com/ibm/wala/ipa/slicer/thin/CISDG.java | 33 ++-- .../ipa/summaries/BypassSyntheticClass.java | 6 +- .../com/ibm/wala/ssa/DefaultIRFactory.java | 6 +- .../ibm/wala/ssa/SSAAddressOfInstruction.java | 3 +- .../java/com/ibm/wala/ssa/SSABuilder.java | 6 +- .../main/java/com/ibm/wala/ssa/SSACFG.java | 3 +- .../wala/ssa/SSALoadIndirectInstruction.java | 3 +- .../wala/ssa/SSAStoreIndirectInstruction.java | 3 +- .../java/com/ibm/wala/ssa/SymbolTable.java | 3 +- .../analysis/ExplodedControlFlowGraph.java | 6 +- .../java/com/ibm/wala/types/TypeName.java | 3 +- .../types/generics/TypeVariableSignature.java | 3 +- .../core/tests/basic/GraphDataflowTest.java | 3 +- .../core/tests/demandpa/AbstractPtrTest.java | 12 +- .../core/tests/ptrs/MultiDimArrayTest.java | 3 +- .../tests/ptrs/TypeBasedArrayAliasTest.java | 3 +- .../ibm/wala/dalvik/ssa/DexSSABuilder.java | 3 +- .../com/ibm/wala/ide/util/JdtPosition.java | 3 +- .../com/ibm/wala/ide/ui/SWTTreeViewer.java | 6 +- .../com/ibm/wala/ide/util/HeadlessUtil.java | 3 +- .../shrikeCT/TypeAnnotationsReader.java | 3 +- .../com/ibm/wala/fixpoint/UnaryOperator.java | 3 +- .../util/collections/CompoundIntIterator.java | 3 +- .../util/collections/ObjectArrayMapping.java | 3 +- .../com/ibm/wala/util/debug/Assertions.java | 16 +- .../wala/util/graph/GraphReachability.java | 3 +- .../util/graph/dominators/Dominators.java | 3 +- .../util/intset/BimodalMutableIntSet.java | 6 +- .../ibm/wala/util/intset/BitVectorIntSet.java | 3 +- .../util/intset/DebuggingMutableIntSet.java | 18 +- .../intset/DebuggingMutableIntSetFactory.java | 3 +- .../com/ibm/wala/util/intset/IntSetUtil.java | 3 +- .../com/ibm/wala/util/intset/LongSetUtil.java | 3 +- .../intset/MutableSharedBitVectorIntSet.java | 6 +- .../util/intset/MutableSparseLongSet.java | 3 +- .../ibm/wala/util/intset/SparseIntSet.java | 3 +- .../ibm/wala/util/intset/SparseLongSet.java | 9 +- .../java/com/ibm/wala/util/math/Logs.java | 3 +- 111 files changed, 377 insertions(+), 634 deletions(-) diff --git a/.markdownlint-cli2.yaml b/.markdownlint-cli2.yaml index d7daee15e6..fa2ed1390e 100644 --- a/.markdownlint-cli2.yaml +++ b/.markdownlint-cli2.yaml @@ -2,3 +2,6 @@ $schema: https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/main/sch noBanner: true noProgress: true showFound: false +config: + no-duplicate-heading: + siblings_only: true diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 6d6b629cf9..5264add5b7 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,5 +1,36 @@ # WALA Release Notes +## Version 1.9.0 + +### Functionality changes + +#### `Assertions.UNREACHABLE` now returns a generic type + +The `Assertions.UNREACHABLE()`, `Assertions.UNREACHABLE(String)`, and +`Assertions.UNREACHABLE(Object)` methods now return a generic type `` +instead of `void`. This allows callers to write `return Assertions.UNREACHABLE(…)` +in methods that return a value, eliminating the previously required pattern of +calling `Assertions.UNREACHABLE()` followed by a separate `return null;` (or +similar unreachable-`return` statement). + +**Effect for third-party consumers:** + +* Existing call sites that previously wrote: + + ```java + Assertions.UNREACHABLE("message"); + return null; + ``` + + can now be simplified to: + + ```java + return Assertions.UNREACHABLE("message"); + ``` + +* Existing call sites that just call `Assertions.UNREACHABLE()` as a + statement without a following `return` continue to work unchanged. + ## Version 1.8.0 ### Functionality changes diff --git a/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/FakeExceptionTypeBinding.java b/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/FakeExceptionTypeBinding.java index 93bdb5be8e..1a2c64eb1d 100644 --- a/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/FakeExceptionTypeBinding.java +++ b/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/FakeExceptionTypeBinding.java @@ -82,8 +82,7 @@ private FakeExceptionTypeBinding(String exceptionBinaryName) { @Override public boolean isAssignmentCompatible(ITypeBinding variableType) { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override @@ -103,189 +102,158 @@ public int hashCode() { @Override public ITypeBinding createArrayType(int dimension) { - Assertions.UNREACHABLE("FakeExceptionTypeBinding createArrayType"); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding createArrayType"); } @Override public String getBinaryName() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public ITypeBinding getBound() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public ITypeBinding getComponentType() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public IVariableBinding[] getDeclaredFields() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public IMethodBinding[] getDeclaredMethods() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @SuppressWarnings("deprecation") @Override public int getDeclaredModifiers() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return 0; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public ITypeBinding[] getDeclaredTypes() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public ITypeBinding getDeclaringClass() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public IMethodBinding getDeclaringMethod() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public int getDimensions() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return 0; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public ITypeBinding getElementType() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public ITypeBinding getErasure() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public ITypeBinding[] getInterfaces() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public int getModifiers() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return 0; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public String getName() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public IPackageBinding getPackage() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public String getQualifiedName() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public ITypeBinding getSuperclass() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public ITypeBinding[] getTypeArguments() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public ITypeBinding[] getTypeBounds() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public ITypeBinding getTypeDeclaration() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public ITypeBinding[] getTypeParameters() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public ITypeBinding getWildcard() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isAnnotation() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isAnonymous() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isArray() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isCapture() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isCastCompatible(ITypeBinding type) { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isClass() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isEnum() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } /** @@ -300,68 +268,57 @@ public boolean isRecord() { @Override public boolean isFromSource() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isGenericType() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isInterface() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } // add @Override here once Eclipse Mars is no longer supported public boolean isIntersectionType() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isLocal() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isMember() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isNested() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isNullType() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isParameterizedType() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isPrimitive() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isRawType() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override @@ -384,56 +341,47 @@ public boolean isSubTypeCompatible(ITypeBinding type) { @Override public boolean isTopLevel() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isTypeVariable() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isUpperbound() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isWildcardType() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public IAnnotationBinding[] getAnnotations() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public IJavaElement getJavaElement() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public String getKey() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public int getKind() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return 0; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isDeprecated() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override @@ -443,40 +391,34 @@ public boolean isEqualTo(IBinding binding) { @Override public boolean isRecovered() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public boolean isSynthetic() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return false; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public ITypeBinding getGenericTypeOfWildcardType() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } @Override public int getRank() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return 0; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } // do not put @Override here, to avoid breaking compilation on Juno @Override public IMethodBinding getFunctionalInterfaceMethod() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } // do not put @Override here, to avoid breaking compilation on Juno @Override public IAnnotationBinding[] getTypeAnnotations() { - Assertions.UNREACHABLE("FakeExceptionTypeBinding "); - return null; + return Assertions.UNREACHABLE("FakeExceptionTypeBinding "); } // do not put @Override here, to avoid breaking compilation on older Eclipse versions diff --git a/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/JDT2CAstUtils.java b/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/JDT2CAstUtils.java index 21648dc069..ca4bfd9f2c 100644 --- a/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/JDT2CAstUtils.java +++ b/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/JDT2CAstUtils.java @@ -85,19 +85,18 @@ public static Collection mapModifiersToQualifiers( } public static CAstOperator mapAssignOperator(Operator op) { - if (op == Assignment.Operator.PLUS_ASSIGN) return CAstOperator.OP_ADD; - else if (op == Assignment.Operator.BIT_AND_ASSIGN) return CAstOperator.OP_BIT_AND; - else if (op == Assignment.Operator.BIT_OR_ASSIGN) return CAstOperator.OP_BIT_OR; - else if (op == Assignment.Operator.BIT_XOR_ASSIGN) return CAstOperator.OP_BIT_XOR; - else if (op == Assignment.Operator.DIVIDE_ASSIGN) return CAstOperator.OP_DIV; - else if (op == Assignment.Operator.REMAINDER_ASSIGN) return CAstOperator.OP_MOD; - else if (op == Assignment.Operator.TIMES_ASSIGN) return CAstOperator.OP_MUL; - else if (op == Assignment.Operator.LEFT_SHIFT_ASSIGN) return CAstOperator.OP_LSH; - else if (op == Assignment.Operator.RIGHT_SHIFT_SIGNED_ASSIGN) return CAstOperator.OP_RSH; - else if (op == Assignment.Operator.MINUS_ASSIGN) return CAstOperator.OP_SUB; - else if (op == Assignment.Operator.RIGHT_SHIFT_UNSIGNED_ASSIGN) return CAstOperator.OP_URSH; - Assertions.UNREACHABLE("Unknown assignment operator"); - return null; + if (op == Operator.PLUS_ASSIGN) return CAstOperator.OP_ADD; + else if (op == Operator.BIT_AND_ASSIGN) return CAstOperator.OP_BIT_AND; + else if (op == Operator.BIT_OR_ASSIGN) return CAstOperator.OP_BIT_OR; + else if (op == Operator.BIT_XOR_ASSIGN) return CAstOperator.OP_BIT_XOR; + else if (op == Operator.DIVIDE_ASSIGN) return CAstOperator.OP_DIV; + else if (op == Operator.REMAINDER_ASSIGN) return CAstOperator.OP_MOD; + else if (op == Operator.TIMES_ASSIGN) return CAstOperator.OP_MUL; + else if (op == Operator.LEFT_SHIFT_ASSIGN) return CAstOperator.OP_LSH; + else if (op == Operator.RIGHT_SHIFT_SIGNED_ASSIGN) return CAstOperator.OP_RSH; + else if (op == Operator.MINUS_ASSIGN) return CAstOperator.OP_SUB; + else if (op == Operator.RIGHT_SHIFT_UNSIGNED_ASSIGN) return CAstOperator.OP_URSH; + return Assertions.UNREACHABLE("Unknown assignment operator"); } protected static CAstOperator mapBinaryOpcode(InfixExpression.Operator operator) { @@ -125,9 +124,8 @@ protected static CAstOperator mapBinaryOpcode(InfixExpression.Operator operator) if (operator == InfixExpression.Operator.RIGHT_SHIFT_SIGNED) return CAstOperator.OP_RSH; if (operator == InfixExpression.Operator.MINUS) return CAstOperator.OP_SUB; if (operator == InfixExpression.Operator.RIGHT_SHIFT_UNSIGNED) return CAstOperator.OP_URSH; - Assertions.UNREACHABLE( + return Assertions.UNREACHABLE( "Java2CAstTranslator.JavaTranslatingVisitorImpl.mapBinaryOpcode(): unrecognized binary operator."); - return null; } /** @@ -171,8 +169,7 @@ else if (current instanceof EnumDeclaration enumDeclaration) return enumDeclaration.resolveBinding(); current = current.getParent(); } - Assertions.UNREACHABLE("Couldn't find declaring class of node"); - return null; + return Assertions.UNREACHABLE("Couldn't find declaring class of node"); } private static final IdentityHashMap ids = @@ -214,22 +211,20 @@ public static ITypeBinding getTypesVariablesBase(ITypeBinding returnType, AST as } public static InfixExpression.Operator mapAssignOperatorToInfixOperator(Assignment.Operator op) { - if (op == Assignment.Operator.PLUS_ASSIGN) return InfixExpression.Operator.PLUS; - else if (op == Assignment.Operator.BIT_AND_ASSIGN) return InfixExpression.Operator.AND; - else if (op == Assignment.Operator.BIT_OR_ASSIGN) return InfixExpression.Operator.OR; - else if (op == Assignment.Operator.BIT_XOR_ASSIGN) return InfixExpression.Operator.XOR; - else if (op == Assignment.Operator.DIVIDE_ASSIGN) return InfixExpression.Operator.DIVIDE; - else if (op == Assignment.Operator.REMAINDER_ASSIGN) return InfixExpression.Operator.REMAINDER; - else if (op == Assignment.Operator.TIMES_ASSIGN) return InfixExpression.Operator.TIMES; - else if (op == Assignment.Operator.LEFT_SHIFT_ASSIGN) - return InfixExpression.Operator.LEFT_SHIFT; - else if (op == Assignment.Operator.RIGHT_SHIFT_SIGNED_ASSIGN) + if (op == Operator.PLUS_ASSIGN) return InfixExpression.Operator.PLUS; + else if (op == Operator.BIT_AND_ASSIGN) return InfixExpression.Operator.AND; + else if (op == Operator.BIT_OR_ASSIGN) return InfixExpression.Operator.OR; + else if (op == Operator.BIT_XOR_ASSIGN) return InfixExpression.Operator.XOR; + else if (op == Operator.DIVIDE_ASSIGN) return InfixExpression.Operator.DIVIDE; + else if (op == Operator.REMAINDER_ASSIGN) return InfixExpression.Operator.REMAINDER; + else if (op == Operator.TIMES_ASSIGN) return InfixExpression.Operator.TIMES; + else if (op == Operator.LEFT_SHIFT_ASSIGN) return InfixExpression.Operator.LEFT_SHIFT; + else if (op == Operator.RIGHT_SHIFT_SIGNED_ASSIGN) return InfixExpression.Operator.RIGHT_SHIFT_SIGNED; - else if (op == Assignment.Operator.MINUS_ASSIGN) return InfixExpression.Operator.MINUS; - else if (op == Assignment.Operator.RIGHT_SHIFT_UNSIGNED_ASSIGN) + else if (op == Operator.MINUS_ASSIGN) return InfixExpression.Operator.MINUS; + else if (op == Operator.RIGHT_SHIFT_UNSIGNED_ASSIGN) return InfixExpression.Operator.RIGHT_SHIFT_UNSIGNED; - Assertions.UNREACHABLE("Unknown assignment operator"); - return null; + return Assertions.UNREACHABLE("Unknown assignment operator"); } private static void getMethodInClassOrSuperclass( diff --git a/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/JDTIdentityMapper.java b/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/JDTIdentityMapper.java index 3361719d76..e9bcba48f2 100644 --- a/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/JDTIdentityMapper.java +++ b/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/JDTIdentityMapper.java @@ -114,11 +114,10 @@ else if (type.isClass() else if (type.isTypeVariable()) { return typeToTypeID(JDT2CAstUtils.getTypesVariablesBase(type, fAst)); } - Assertions.UNREACHABLE( + return Assertions.UNREACHABLE( "typeToTypeID() encountered the type " + type + " that is neither primitive, array, nor class!"); - return null; } public String anonLocalTypeToTypeID(ITypeBinding type) { diff --git a/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/JDTJava2CAstTranslator.java b/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/JDTJava2CAstTranslator.java index 4515877148..0198b0e7ce 100644 --- a/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/JDTJava2CAstTranslator.java +++ b/cast/java/ecj/src/main/java/com/ibm/wala/cast/java/translator/jdt/JDTJava2CAstTranslator.java @@ -374,9 +374,8 @@ public Map> getAllScopedEntities() { @Override public Iterator getScopedEntities(CAstNode construct) { - Assertions.UNREACHABLE( + return Assertions.UNREACHABLE( "Non-AST-bearing entity (ClassEntity) asked for scoped entities related to a given AST node"); - return null; } @Override @@ -720,8 +719,7 @@ private static IMethodBinding findDefaultCtor(ITypeBinding superClass) { for (IMethodBinding met : superClass.getDeclaredMethods()) { if (met.isConstructor() && met.getParameterTypes().length == 0) return met; } - Assertions.UNREACHABLE("Couldn't find default ctor"); - return null; + return Assertions.UNREACHABLE("Couldn't find default ctor"); } /** @@ -1453,8 +1451,7 @@ private CAstNode visitFieldInitNode(ASTNode node, WalkContext context) { } else if (node instanceof EnumConstantDeclaration enumConstantDeclaration) { return createEnumConstantDeclarationInit(enumConstantDeclaration, context); } else { - Assertions.UNREACHABLE("invalid init node gathered by createClassDeclaration"); - return null; + return Assertions.UNREACHABLE("invalid init node gathered by createClassDeclaration"); } } @@ -2395,9 +2392,8 @@ private static ITypeBinding findClosestEnclosingClassSubclassOf( current = current.getDeclaringClass(); } - Assertions.UNREACHABLE( + return Assertions.UNREACHABLE( "Couldn't find field in class or enclosing class or superclasses of these"); - return null; } /** @@ -3107,8 +3103,7 @@ private CAstNode getSwitchCaseConstant(SwitchCase n, WalkContext context) { // enum constant return visit(simpleName, context); } else { - Assertions.UNREACHABLE("null constant for non-enum switch case!"); - return null; + return Assertions.UNREACHABLE("null constant for non-enum switch case!"); } } @@ -3911,8 +3906,7 @@ private CAstEntity visit(AbstractTypeDeclaration n, WalkContext context) { } else if (n instanceof AnnotationTypeDeclaration) { return visitTypeDecl(n, context); } else { - Assertions.UNREACHABLE("Unhandled type declaration type"); - return null; + return Assertions.UNREACHABLE("Unhandled type declaration type"); } } @@ -4024,9 +4018,7 @@ private CAstNode visitNode(ASTNode n, WalkContext context) { // VariableDeclarationStatement handled as special case (returns multiple statements) - Assertions.UNREACHABLE("Unhandled JDT node type " + n.getClass().getCanonicalName()); - - return null; + return Assertions.UNREACHABLE("Unhandled JDT node type " + n.getClass().getCanonicalName()); } private void visitNodeOrNodes(ASTNode n, WalkContext context, Collection coll) { @@ -4070,8 +4062,7 @@ public String getName() { @Override public String getSignature() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override @@ -4096,9 +4087,8 @@ public Map> getAllScopedEntities() { @Override public Iterator getScopedEntities(CAstNode construct) { - Assertions.UNREACHABLE( + return Assertions.UNREACHABLE( "CompilationUnitEntity asked for AST-related entities, but it has no AST."); - return null; } @Override @@ -4108,14 +4098,12 @@ public CAstNode getAST() { @Override public CAstControlFlowMap getControlFlow() { - Assertions.UNREACHABLE("CompilationUnitEntity.getControlFlow()"); - return null; + return Assertions.UNREACHABLE("CompilationUnitEntity.getControlFlow()"); } @Override public CAstSourcePositionMap getSourceMap() { - Assertions.UNREACHABLE("CompilationUnitEntity.getSourceMap()"); - return null; + return Assertions.UNREACHABLE("CompilationUnitEntity.getSourceMap()"); } @Override @@ -4125,8 +4113,7 @@ public CAstSourcePositionMap.Position getPosition() { @Override public CAstNodeTypeMap getNodeTypeMap() { - Assertions.UNREACHABLE("CompilationUnitEntity.getNodeTypeMap()"); - return null; + return Assertions.UNREACHABLE("CompilationUnitEntity.getNodeTypeMap()"); } @Override @@ -4136,8 +4123,7 @@ public Collection getQualifiers() { @Override public CAstType getType() { - Assertions.UNREACHABLE("CompilationUnitEntity.getType()"); - return null; + return Assertions.UNREACHABLE("CompilationUnitEntity.getType()"); } @Override @@ -4204,20 +4190,17 @@ public static class RootContext extends TranslatorToCAst.RootContext> getCatchTargets(ITypeBinding type) { - Assertions.UNREACHABLE("RootContext.getCatchTargets()"); - return null; + return Assertions.UNREACHABLE("RootContext.getCatchTargets()"); } @Override public Map getLabelMap() { - Assertions.UNREACHABLE("RootContext.getLabelMap()"); - return null; + return Assertions.UNREACHABLE("RootContext.getLabelMap()"); } @Override public boolean needLValue() { - Assertions.UNREACHABLE("Rootcontext.needLValue()"); - return false; + return Assertions.UNREACHABLE("Rootcontext.needLValue()"); } } diff --git a/cast/java/src/main/java/com/ibm/wala/cast/java/ipa/callgraph/AstJavaSSAPropagationCallGraphBuilder.java b/cast/java/src/main/java/com/ibm/wala/cast/java/ipa/callgraph/AstJavaSSAPropagationCallGraphBuilder.java index 67f6b6c076..07859e66d1 100644 --- a/cast/java/src/main/java/com/ibm/wala/cast/java/ipa/callgraph/AstJavaSSAPropagationCallGraphBuilder.java +++ b/cast/java/src/main/java/com/ibm/wala/cast/java/ipa/callgraph/AstJavaSSAPropagationCallGraphBuilder.java @@ -325,7 +325,6 @@ protected boolean sameMethod(CGNode opNode, String definingMethod) { @Override public GlobalObjectKey getGlobalObject(Atom language) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/cast/java/src/main/java/com/ibm/wala/cast/java/loader/JavaSourceLoaderImpl.java b/cast/java/src/main/java/com/ibm/wala/cast/java/loader/JavaSourceLoaderImpl.java index e9601a579f..aae75257ca 100644 --- a/cast/java/src/main/java/com/ibm/wala/cast/java/loader/JavaSourceLoaderImpl.java +++ b/cast/java/src/main/java/com/ibm/wala/cast/java/loader/JavaSourceLoaderImpl.java @@ -339,13 +339,11 @@ public JavaEntityMethod(CAstEntity methodEntity, IClass owner) { } public int getMaxLocals() { - Assertions.UNREACHABLE("AbstractJavaMethod.getMaxLocals() called"); - return 0; + return Assertions.UNREACHABLE("AbstractJavaMethod.getMaxLocals() called"); } public int getMaxStackHeight() { - Assertions.UNREACHABLE("AbstractJavaMethod.getMaxStackHeight() called"); - return 0; + return Assertions.UNREACHABLE("AbstractJavaMethod.getMaxStackHeight() called"); } @Override @@ -418,14 +416,12 @@ public AbstractJavaMethod(CAstEntity methodEntity, IClass owner) { @Override public String getLocalVariableName(int bcIndex, int localNumber) { - Assertions.UNREACHABLE("AbstractJavaMethod.getLocalVariableName() called"); - return null; + return Assertions.UNREACHABLE("AbstractJavaMethod.getLocalVariableName() called"); } @Override public boolean hasLocalVariableTable() { - Assertions.UNREACHABLE("AbstractJavaMethod.hasLocalVariableTable() called"); - return false; + return Assertions.UNREACHABLE("AbstractJavaMethod.hasLocalVariableTable() called"); } @Override diff --git a/cast/java/src/main/java/com/ibm/wala/cast/java/translator/JavaCAst2IRTranslator.java b/cast/java/src/main/java/com/ibm/wala/cast/java/translator/JavaCAst2IRTranslator.java index b51769a1bb..18afc1630b 100644 --- a/cast/java/src/main/java/com/ibm/wala/cast/java/translator/JavaCAst2IRTranslator.java +++ b/cast/java/src/main/java/com/ibm/wala/cast/java/translator/JavaCAst2IRTranslator.java @@ -104,8 +104,7 @@ protected TypeReference makeType(CAstType type) { // ask this question when parsing Java code @Override protected boolean treatGlobalsAsLexicallyScoped() { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } @Override diff --git a/cast/js/rhino/src/main/java/com/ibm/wala/cast/js/translator/RhinoToAstTranslator.java b/cast/js/rhino/src/main/java/com/ibm/wala/cast/js/translator/RhinoToAstTranslator.java index 6f40a45438..358814163c 100644 --- a/cast/js/rhino/src/main/java/com/ibm/wala/cast/js/translator/RhinoToAstTranslator.java +++ b/cast/js/rhino/src/main/java/com/ibm/wala/cast/js/translator/RhinoToAstTranslator.java @@ -428,8 +428,7 @@ public String getName() { @Override public String getSignature() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override @@ -495,8 +494,7 @@ public Collection getAnnotations() { @Override public Collection getQualifiers() { - Assertions.UNREACHABLE("JuliansUnnamedCAstEntity$2.getQualifiers()"); - return null; + return Assertions.UNREACHABLE("JuliansUnnamedCAstEntity$2.getQualifiers()"); } @Override diff --git a/cast/js/src/main/java/com/ibm/wala/cast/js/client/JavaScriptAnalysisEngine.java b/cast/js/src/main/java/com/ibm/wala/cast/js/client/JavaScriptAnalysisEngine.java index d23f002b4d..f5b295fa1f 100644 --- a/cast/js/src/main/java/com/ibm/wala/cast/js/client/JavaScriptAnalysisEngine.java +++ b/cast/js/src/main/java/com/ibm/wala/cast/js/client/JavaScriptAnalysisEngine.java @@ -68,8 +68,7 @@ public IClassHierarchy buildClassHierarchy() { return setClassHierarchy( SeqClassHierarchyFactory.make(getScope(), loaderFactory, JavaScriptLoader.JS)); } catch (ClassHierarchyException e) { - Assertions.UNREACHABLE(e.toString()); - return null; + return Assertions.UNREACHABLE(e.toString()); } } diff --git a/cast/js/src/main/java/com/ibm/wala/cast/js/ipa/callgraph/correlations/extraction/CAstRewriterExt.java b/cast/js/src/main/java/com/ibm/wala/cast/js/ipa/callgraph/correlations/extraction/CAstRewriterExt.java index 2bc62d7799..f062966cba 100644 --- a/cast/js/src/main/java/com/ibm/wala/cast/js/ipa/callgraph/correlations/extraction/CAstRewriterExt.java +++ b/cast/js/src/main/java/com/ibm/wala/cast/js/ipa/callgraph/correlations/extraction/CAstRewriterExt.java @@ -160,8 +160,7 @@ protected CAstNode flowOutTo( CAstControlFlowMap orig, CAstSourcePositionMap src) { if (oldTarget == CAstControlFlowMap.EXCEPTION_TO_EXIT) return oldTarget; - Assertions.UNREACHABLE(); - return super.flowOutTo(nodeMap, oldSource, label, oldTarget, orig, src); + return Assertions.UNREACHABLE(); } @Override diff --git a/cast/js/src/main/java/com/ibm/wala/cast/js/translator/JSAstTranslator.java b/cast/js/src/main/java/com/ibm/wala/cast/js/translator/JSAstTranslator.java index 6e5ff19c26..28c31ca5a0 100644 --- a/cast/js/src/main/java/com/ibm/wala/cast/js/translator/JSAstTranslator.java +++ b/cast/js/src/main/java/com/ibm/wala/cast/js/translator/JSAstTranslator.java @@ -144,9 +144,8 @@ protected int doGlobalRead(CAstNode n, WalkContext context, String name, TypeRef @Override protected boolean defineType(CAstEntity type, WalkContext wc) { - Assertions.UNREACHABLE( + return Assertions.UNREACHABLE( "JavaScript doesn't have types. I suggest you look elsewhere for your amusement."); - return false; } @Override diff --git a/cast/js/src/main/java/com/ibm/wala/cast/js/translator/JavaScriptTranslatorToCAst.java b/cast/js/src/main/java/com/ibm/wala/cast/js/translator/JavaScriptTranslatorToCAst.java index c875602bb8..3a970d3c28 100644 --- a/cast/js/src/main/java/com/ibm/wala/cast/js/translator/JavaScriptTranslatorToCAst.java +++ b/cast/js/src/main/java/com/ibm/wala/cast/js/translator/JavaScriptTranslatorToCAst.java @@ -59,8 +59,7 @@ public String script() { @Override public T top() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override @@ -70,14 +69,12 @@ public void addNameDecl(CAstNode v) { @Override public List getNameDecls() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override public CAstNode getCatchTarget() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/cast/src/main/java/com/ibm/wala/cast/ipa/callgraph/CAstAnalysisScope.java b/cast/src/main/java/com/ibm/wala/cast/ipa/callgraph/CAstAnalysisScope.java index b5b82b307e..faad8637d0 100644 --- a/cast/src/main/java/com/ibm/wala/cast/ipa/callgraph/CAstAnalysisScope.java +++ b/cast/src/main/java/com/ibm/wala/cast/ipa/callgraph/CAstAnalysisScope.java @@ -53,8 +53,7 @@ public CAstAnalysisScope( */ @Override public ClassLoaderReference getPrimordialLoader() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } /** @@ -64,8 +63,7 @@ public ClassLoaderReference getPrimordialLoader() { */ @Override public ClassLoaderReference getExtensionLoader() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } /** @@ -75,8 +73,7 @@ public ClassLoaderReference getExtensionLoader() { */ @Override public ClassLoaderReference getApplicationLoader() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } /** @@ -84,8 +81,7 @@ public ClassLoaderReference getApplicationLoader() { */ @Override public ArrayClassLoader getArrayClassLoader() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } /** diff --git a/cast/src/main/java/com/ibm/wala/cast/ipa/cha/CrossLanguageClassHierarchy.java b/cast/src/main/java/com/ibm/wala/cast/ipa/cha/CrossLanguageClassHierarchy.java index 97dcf2741c..0592b91916 100644 --- a/cast/src/main/java/com/ibm/wala/cast/ipa/cha/CrossLanguageClassHierarchy.java +++ b/cast/src/main/java/com/ibm/wala/cast/ipa/cha/CrossLanguageClassHierarchy.java @@ -132,8 +132,7 @@ public boolean isRootClass(IClass c) { @Override public IClass getRootClass() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/cast/src/main/java/com/ibm/wala/cast/ir/cfg/Util.java b/cast/src/main/java/com/ibm/wala/cast/ir/cfg/Util.java index d998deb195..b68f1ad4c1 100644 --- a/cast/src/main/java/com/ibm/wala/cast/ir/cfg/Util.java +++ b/cast/src/main/java/com/ibm/wala/cast/ir/cfg/Util.java @@ -24,7 +24,6 @@ public static > int whichPred(ControlFlowGraph ++i; } - Assertions.UNREACHABLE(); - return -1; + return Assertions.UNREACHABLE(); } } diff --git a/cast/src/main/java/com/ibm/wala/cast/ir/ssa/AstConsumeInstruction.java b/cast/src/main/java/com/ibm/wala/cast/ir/ssa/AstConsumeInstruction.java index 9eb70d9249..a3957b528a 100644 --- a/cast/src/main/java/com/ibm/wala/cast/ir/ssa/AstConsumeInstruction.java +++ b/cast/src/main/java/com/ibm/wala/cast/ir/ssa/AstConsumeInstruction.java @@ -26,8 +26,7 @@ public AstConsumeInstruction(int iindex, int[] rvals) { @Override public int getDef(int i) { - Assertions.UNREACHABLE(); - return -1; + return Assertions.UNREACHABLE(); } @Override diff --git a/cast/src/main/java/com/ibm/wala/cast/ir/ssa/AstIsDefinedInstruction.java b/cast/src/main/java/com/ibm/wala/cast/ir/ssa/AstIsDefinedInstruction.java index ec51aadeda..fb3fcea3ff 100644 --- a/cast/src/main/java/com/ibm/wala/cast/ir/ssa/AstIsDefinedInstruction.java +++ b/cast/src/main/java/com/ibm/wala/cast/ir/ssa/AstIsDefinedInstruction.java @@ -108,8 +108,7 @@ public String toString(SymbolTable symbolTable) { + getValueString(symbolTable, fieldVal) + ')'; } else { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } @@ -157,8 +156,7 @@ public int getUse(int j) { } else if (j == 1 && fieldVal != -1) { return fieldVal; } else { - Assertions.UNREACHABLE(); - return -1; + return Assertions.UNREACHABLE(); } } diff --git a/cast/src/main/java/com/ibm/wala/cast/ir/ssa/analysis/LiveAnalysis.java b/cast/src/main/java/com/ibm/wala/cast/ir/ssa/analysis/LiveAnalysis.java index 3f5565e60b..b59269f961 100644 --- a/cast/src/main/java/com/ibm/wala/cast/ir/ssa/analysis/LiveAnalysis.java +++ b/cast/src/main/java/com/ibm/wala/cast/ir/ssa/analysis/LiveAnalysis.java @@ -234,8 +234,7 @@ public UnaryOperator getNodeTransferFunction( @Override public UnaryOperator getEdgeTransferFunction( ISSABasicBlock s, ISSABasicBlock d) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } /** Live analysis uses 'union' as 'meet operator' */ diff --git a/cast/src/main/java/com/ibm/wala/cast/ir/translator/AbstractEntity.java b/cast/src/main/java/com/ibm/wala/cast/ir/translator/AbstractEntity.java index 8864674001..873ef76dc9 100644 --- a/cast/src/main/java/com/ibm/wala/cast/ir/translator/AbstractEntity.java +++ b/cast/src/main/java/com/ibm/wala/cast/ir/translator/AbstractEntity.java @@ -37,8 +37,7 @@ public abstract class AbstractEntity implements CAstEntity { @Override public String getSignature() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/cast/src/main/java/com/ibm/wala/cast/ir/translator/AstTranslator.java b/cast/src/main/java/com/ibm/wala/cast/ir/translator/AstTranslator.java index 2a57cf7045..3f2d5f4695 100644 --- a/cast/src/main/java/com/ibm/wala/cast/ir/translator/AstTranslator.java +++ b/cast/src/main/java/com/ibm/wala/cast/ir/translator/AstTranslator.java @@ -2960,20 +2960,17 @@ private TypeContext(WalkContext parent, CAstEntity n) { @Override public CAstControlFlowMap getControlFlow() { - Assertions.UNREACHABLE("TypeContext.getControlFlow()"); - return null; + return Assertions.UNREACHABLE("TypeContext.getControlFlow()"); } @Override public IncipientCFG cfg() { - Assertions.UNREACHABLE("TypeContext.cfg()"); - return null; + return Assertions.UNREACHABLE("TypeContext.cfg()"); } @Override public UnwindState getUnwindState() { - Assertions.UNREACHABLE("TypeContext.getUnwindState()"); - return null; + return Assertions.UNREACHABLE("TypeContext.getUnwindState()"); } } @@ -3341,8 +3338,7 @@ protected IBinaryOpInstruction.IOperator translateBinaryOpcode(CAstNode op) { else if (op == CAstOperator.OP_INSTANCE_OF) return CAstBinaryOp.INSTANCE_OF; else if (op == CAstOperator.OP_POW) return CAstBinaryOp.POW; else { - Assertions.UNREACHABLE("cannot translate " + CAstPrinter.print(op)); - return null; + return Assertions.UNREACHABLE("cannot translate " + CAstPrinter.print(op)); } } diff --git a/cast/src/main/java/com/ibm/wala/cast/loader/CAstAbstractModuleLoader.java b/cast/src/main/java/com/ibm/wala/cast/loader/CAstAbstractModuleLoader.java index af7233baff..d50e5a85bf 100644 --- a/cast/src/main/java/com/ibm/wala/cast/loader/CAstAbstractModuleLoader.java +++ b/cast/src/main/java/com/ibm/wala/cast/loader/CAstAbstractModuleLoader.java @@ -377,13 +377,11 @@ public boolean hasLocalVariableTable() { } public int getMaxLocals() { - Assertions.UNREACHABLE(); - return -1; + return Assertions.UNREACHABLE(); } public int getMaxStackHeight() { - Assertions.UNREACHABLE(); - return -1; + return Assertions.UNREACHABLE(); } @Override diff --git a/cast/src/main/java/com/ibm/wala/cast/util/CAstPattern.java b/cast/src/main/java/com/ibm/wala/cast/util/CAstPattern.java index a0960dcc6b..a59421ac6f 100644 --- a/cast/src/main/java/com/ibm/wala/cast/util/CAstPattern.java +++ b/cast/src/main/java/com/ibm/wala/cast/util/CAstPattern.java @@ -371,11 +371,9 @@ public static CAstPattern parse(String patternString) { try { return new Parser(patternString).parse(); } catch (NoSuchFieldException e) { - Assertions.UNREACHABLE("no such kind in pattern: " + e.getMessage()); - return null; + return Assertions.UNREACHABLE("no such kind in pattern: " + e.getMessage()); } catch (IllegalAccessException e) { - Assertions.UNREACHABLE("internal error in CAstPattern" + e); - return null; + return Assertions.UNREACHABLE("internal error in CAstPattern" + e); } } diff --git a/core/src/main/java/com/ibm/wala/analysis/pointers/BasicHeapGraph.java b/core/src/main/java/com/ibm/wala/analysis/pointers/BasicHeapGraph.java index b6cbe8743f..6270499d32 100644 --- a/core/src/main/java/com/ibm/wala/analysis/pointers/BasicHeapGraph.java +++ b/core/src/main/java/com/ibm/wala/analysis/pointers/BasicHeapGraph.java @@ -225,8 +225,7 @@ public void removeOutgoingEdges(Object node) { @Override public boolean hasEdge(Object src, Object dst) { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } }; @@ -287,8 +286,7 @@ private int[] computeSuccNodeNumbers(Object N, NumberedNodeManager nodeM return result.toIntArray(); } } else { - Assertions.UNREACHABLE("Unexpected type: " + N.getClass()); - return null; + return Assertions.UNREACHABLE("Unexpected type: " + N.getClass()); } } @@ -484,8 +482,7 @@ public void removeEdge(Object from, Object to) throws UnimplementedError { @Override public boolean hasEdge(Object from, Object to) throws UnimplementedError { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } @Override @@ -538,13 +535,11 @@ public void removeOutgoingEdges(Object node) throws UnimplementedError { @Override public IntSet getSuccNodeNumbers(Object node) throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override public IntSet getPredNodeNumbers(Object node) throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/analysis/reflection/AbstractReflectionInterpreter.java b/core/src/main/java/com/ibm/wala/analysis/reflection/AbstractReflectionInterpreter.java index d2a162024a..9d243fdb55 100644 --- a/core/src/main/java/com/ibm/wala/analysis/reflection/AbstractReflectionInterpreter.java +++ b/core/src/main/java/com/ibm/wala/analysis/reflection/AbstractReflectionInterpreter.java @@ -93,8 +93,7 @@ protected TypeAbstraction typeRef2TypeAbstraction(IClassHierarchy cha, TypeRefer if (klass != null) { return new ConeType(klass); } - Assertions.UNREACHABLE(type.toString()); - return null; + return Assertions.UNREACHABLE(type.toString()); } /** A warning when we expect excessive pollution from a factory method */ diff --git a/core/src/main/java/com/ibm/wala/analysis/reflection/FactoryBypassInterpreter.java b/core/src/main/java/com/ibm/wala/analysis/reflection/FactoryBypassInterpreter.java index 5f2668d9f3..108711385d 100644 --- a/core/src/main/java/com/ibm/wala/analysis/reflection/FactoryBypassInterpreter.java +++ b/core/src/main/java/com/ibm/wala/analysis/reflection/FactoryBypassInterpreter.java @@ -237,8 +237,7 @@ public Iterator iterateFieldsRead(CGNode node) { return CodeScanner.getFieldsRead(m).iterator(); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } @@ -252,8 +251,7 @@ public Iterator iterateFieldsWritten(CGNode node) { return CodeScanner.getFieldsWritten(m).iterator(); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } @@ -278,8 +276,7 @@ public Set getCaughtExceptions(CGNode node) { return CodeScanner.getCaughtExceptions(m); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } @@ -292,8 +289,7 @@ public boolean hasObjectArrayLoad(CGNode node) { return CodeScanner.hasObjectArrayLoad(m); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } } @@ -306,8 +302,7 @@ public boolean hasObjectArrayStore(CGNode node) { return CodeScanner.hasObjectArrayStore(m); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } } @@ -320,8 +315,7 @@ public Iterator iterateCastTypes(CGNode node) { return CodeScanner.iterateCastTypes(m); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/analysis/reflection/GetMethodContextInterpreter.java b/core/src/main/java/com/ibm/wala/analysis/reflection/GetMethodContextInterpreter.java index 4b6482102b..a0e6bc5c3a 100644 --- a/core/src/main/java/com/ibm/wala/analysis/reflection/GetMethodContextInterpreter.java +++ b/core/src/main/java/com/ibm/wala/analysis/reflection/GetMethodContextInterpreter.java @@ -104,8 +104,7 @@ public IR getIR(CGNode node) { SSAOptions.defaultOptions(), constants); } - Assertions.UNREACHABLE("Unexpected method " + node); - return null; + return Assertions.UNREACHABLE("Unexpected method " + node); } @Override diff --git a/core/src/main/java/com/ibm/wala/analysis/reflection/JavaLangClassContextInterpreter.java b/core/src/main/java/com/ibm/wala/analysis/reflection/JavaLangClassContextInterpreter.java index 1227c90b21..fb57fe111b 100644 --- a/core/src/main/java/com/ibm/wala/analysis/reflection/JavaLangClassContextInterpreter.java +++ b/core/src/main/java/com/ibm/wala/analysis/reflection/JavaLangClassContextInterpreter.java @@ -227,8 +227,7 @@ private static IR makeIR(IMethod method, Context context) { SSAOptions.defaultOptions(), constants); } - Assertions.UNREACHABLE("Unexpected method " + method); - return null; + return Assertions.UNREACHABLE("Unexpected method " + method); } /* END Custom change: caching */ diff --git a/core/src/main/java/com/ibm/wala/analysis/typeInference/ConeType.java b/core/src/main/java/com/ibm/wala/analysis/typeInference/ConeType.java index d0f08c540b..0cd52685c1 100644 --- a/core/src/main/java/com/ibm/wala/analysis/typeInference/ConeType.java +++ b/core/src/main/java/com/ibm/wala/analysis/typeInference/ConeType.java @@ -51,8 +51,7 @@ public TypeAbstraction meet(TypeAbstraction rhs) { } else if (rhs instanceof PrimitiveType) { return TOP; } else { - Assertions.UNREACHABLE("unexpected type " + rhs.getClass()); - return null; + return Assertions.UNREACHABLE("unexpected type " + rhs.getClass()); } } diff --git a/core/src/main/java/com/ibm/wala/analysis/typeInference/PointType.java b/core/src/main/java/com/ibm/wala/analysis/typeInference/PointType.java index 23b191cc47..a361bee84f 100644 --- a/core/src/main/java/com/ibm/wala/analysis/typeInference/PointType.java +++ b/core/src/main/java/com/ibm/wala/analysis/typeInference/PointType.java @@ -67,8 +67,7 @@ public TypeAbstraction meet(TypeAbstraction rhs) { // TODO: avoid the allocation return other.meet(new ConeType(this.getType())); } else { - Assertions.UNREACHABLE("Unexpected type: " + rhs.getClass()); - return null; + return Assertions.UNREACHABLE("Unexpected type: " + rhs.getClass()); } } } diff --git a/core/src/main/java/com/ibm/wala/cfg/AbstractCFG.java b/core/src/main/java/com/ibm/wala/cfg/AbstractCFG.java index aa548fdcbc..e5ff4fbc96 100644 --- a/core/src/main/java/com/ibm/wala/cfg/AbstractCFG.java +++ b/core/src/main/java/com/ibm/wala/cfg/AbstractCFG.java @@ -635,8 +635,7 @@ public Collection getNormalPredecessors(T b) { @Override public IntSet getPredNodeNumbers(T node) throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } /* diff --git a/core/src/main/java/com/ibm/wala/cfg/ShrikeCFG.java b/core/src/main/java/com/ibm/wala/cfg/ShrikeCFG.java index 2e8c05f6f9..79656be4e5 100644 --- a/core/src/main/java/com/ibm/wala/cfg/ShrikeCFG.java +++ b/core/src/main/java/com/ibm/wala/cfg/ShrikeCFG.java @@ -95,8 +95,7 @@ public IInstruction[] getInstructions() { return method.getInstructions(); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } @@ -531,8 +530,7 @@ public int getProgramCounter(int index) { return method.getBytecodeIndex(index); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return -1; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/cfg/Util.java b/core/src/main/java/com/ibm/wala/cfg/Util.java index 946eaa733b..40109891bf 100644 --- a/core/src/main/java/com/ibm/wala/cfg/Util.java +++ b/core/src/main/java/com/ibm/wala/cfg/Util.java @@ -143,8 +143,7 @@ public static > int getSwitch } } - Assertions.UNREACHABLE(); - return -1; + return Assertions.UNREACHABLE(); } /** @@ -195,7 +194,6 @@ public static > int whichPred(ControlFlowGraph } i++; } - Assertions.UNREACHABLE("Invalid: a must be a predecessor of b! " + a + ' ' + b); - return -1; + return Assertions.UNREACHABLE("Invalid: a must be a predecessor of b! " + a + ' ' + b); } } diff --git a/core/src/main/java/com/ibm/wala/classLoader/AbstractNestedJarFileModule.java b/core/src/main/java/com/ibm/wala/classLoader/AbstractNestedJarFileModule.java index 6c93220055..d22b31cc1d 100644 --- a/core/src/main/java/com/ibm/wala/classLoader/AbstractNestedJarFileModule.java +++ b/core/src/main/java/com/ibm/wala/classLoader/AbstractNestedJarFileModule.java @@ -169,8 +169,7 @@ public boolean isModuleFile() { @Override public Module asModule() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/core/src/main/java/com/ibm/wala/classLoader/AbstractURLModule.java b/core/src/main/java/com/ibm/wala/classLoader/AbstractURLModule.java index be8bfe633c..23e7a7ddd8 100644 --- a/core/src/main/java/com/ibm/wala/classLoader/AbstractURLModule.java +++ b/core/src/main/java/com/ibm/wala/classLoader/AbstractURLModule.java @@ -41,8 +41,7 @@ public String getName() { if (con instanceof JarURLConnection jarURLConnection) return jarURLConnection.getEntryName(); else return new FileProvider().filePathFromURL(url); } catch (IOException e) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } @@ -63,8 +62,7 @@ public boolean isModuleFile() { @Override public Module asModule() throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/core/src/main/java/com/ibm/wala/classLoader/ArrayClass.java b/core/src/main/java/com/ibm/wala/classLoader/ArrayClass.java index ca4c9c2f8b..e1970e27ae 100644 --- a/core/src/main/java/com/ibm/wala/classLoader/ArrayClass.java +++ b/core/src/main/java/com/ibm/wala/classLoader/ArrayClass.java @@ -189,8 +189,7 @@ public Collection getDeclaredInstanceFields() throws UnsupportedOperatio @Override public Collection getDeclaredStaticFields() throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override @@ -255,8 +254,7 @@ public IClass getInnermostElementClass() { @Override public Collection getDirectInterfaces() throws UnimplementedError { // TODO Auto-generated method stub - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override @@ -270,14 +268,12 @@ public boolean equals(Object obj) { @Override public Collection getAllInstanceFields() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override public Collection getAllStaticFields() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override @@ -289,8 +285,7 @@ public Collection getAllMethods() { @Override public Collection getAllFields() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/core/src/main/java/com/ibm/wala/classLoader/CallSiteReference.java b/core/src/main/java/com/ibm/wala/classLoader/CallSiteReference.java index 6029363e7d..017c7055af 100644 --- a/core/src/main/java/com/ibm/wala/classLoader/CallSiteReference.java +++ b/core/src/main/java/com/ibm/wala/classLoader/CallSiteReference.java @@ -14,6 +14,7 @@ import com.ibm.wala.ipa.callgraph.ContextItem; import com.ibm.wala.shrike.shrikeBT.BytecodeConstants; import com.ibm.wala.shrike.shrikeBT.IInvokeInstruction; +import com.ibm.wala.shrike.shrikeBT.IInvokeInstruction.Dispatch; import com.ibm.wala.ssa.IR; import com.ibm.wala.types.MethodReference; import com.ibm.wala.util.debug.Assertions; @@ -152,13 +153,12 @@ public String toString() { } protected String getInvocationString(IInvokeInstruction.IDispatch invocationCode) { - if (invocationCode == IInvokeInstruction.Dispatch.STATIC) return "static"; - if (invocationCode == IInvokeInstruction.Dispatch.SPECIAL) return "special"; - if (invocationCode == IInvokeInstruction.Dispatch.VIRTUAL) return "virtual"; - if (invocationCode == IInvokeInstruction.Dispatch.INTERFACE) return "interface"; + if (invocationCode == Dispatch.STATIC) return "static"; + if (invocationCode == Dispatch.SPECIAL) return "special"; + if (invocationCode == Dispatch.VIRTUAL) return "virtual"; + if (invocationCode == Dispatch.INTERFACE) return "interface"; - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } public String getInvocationString() { diff --git a/core/src/main/java/com/ibm/wala/classLoader/FileModule.java b/core/src/main/java/com/ibm/wala/classLoader/FileModule.java index 2a7545bf9e..f25da956f3 100644 --- a/core/src/main/java/com/ibm/wala/classLoader/FileModule.java +++ b/core/src/main/java/com/ibm/wala/classLoader/FileModule.java @@ -78,8 +78,7 @@ public InputStream getInputStream() { return new FileInputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); - Assertions.UNREACHABLE("could not read " + file); - return null; + return Assertions.UNREACHABLE("could not read " + file); } } @@ -97,8 +96,7 @@ public File getFile() { @Override public Module asModule() throws UnimplementedError { - Assertions.UNREACHABLE("implement me"); - return null; + return Assertions.UNREACHABLE("implement me"); } @Override diff --git a/core/src/main/java/com/ibm/wala/classLoader/JarFileEntry.java b/core/src/main/java/com/ibm/wala/classLoader/JarFileEntry.java index fe52989dca..a41bce354d 100644 --- a/core/src/main/java/com/ibm/wala/classLoader/JarFileEntry.java +++ b/core/src/main/java/com/ibm/wala/classLoader/JarFileEntry.java @@ -46,8 +46,7 @@ public InputStream getInputStream() { } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/classLoader/JarFileModule.java b/core/src/main/java/com/ibm/wala/classLoader/JarFileModule.java index ad5fb5fc96..57c4796489 100644 --- a/core/src/main/java/com/ibm/wala/classLoader/JarFileModule.java +++ b/core/src/main/java/com/ibm/wala/classLoader/JarFileModule.java @@ -105,8 +105,7 @@ public byte[] getContents(ZipEntry entry) { return bb; } catch (IOException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/classLoader/JarStreamModule.java b/core/src/main/java/com/ibm/wala/classLoader/JarStreamModule.java index 3b06631c93..05cde4cdf8 100644 --- a/core/src/main/java/com/ibm/wala/classLoader/JarStreamModule.java +++ b/core/src/main/java/com/ibm/wala/classLoader/JarStreamModule.java @@ -165,8 +165,7 @@ public boolean isModuleFile() { @Override public Module asModule() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/core/src/main/java/com/ibm/wala/classLoader/ShrikeBTMethod.java b/core/src/main/java/com/ibm/wala/classLoader/ShrikeBTMethod.java index 14abdaa02d..75a2d355c1 100644 --- a/core/src/main/java/com/ibm/wala/classLoader/ShrikeBTMethod.java +++ b/core/src/main/java/com/ibm/wala/classLoader/ShrikeBTMethod.java @@ -331,8 +331,7 @@ private MethodReference computeMethodReference() { Descriptor D = Descriptor.findOrCreate(declaringClass.getClassLoader().getLanguage(), desc); return MethodReference.findOrCreate(declaringClass.getReference(), name, D); } catch (InvalidClassFileException e) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } @@ -761,8 +760,7 @@ private TypeReference[] computeDeclaredExceptions() { loader, TypeName.findOrCreate(ImmutableByteArray.make('L' + strings[i])))); return result; } catch (InvalidClassFileException e) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/classLoader/ShrikeCTMethod.java b/core/src/main/java/com/ibm/wala/classLoader/ShrikeCTMethod.java index 1083f865a6..a5378bcde6 100644 --- a/core/src/main/java/com/ibm/wala/classLoader/ShrikeCTMethod.java +++ b/core/src/main/java/com/ibm/wala/classLoader/ShrikeCTMethod.java @@ -305,8 +305,7 @@ public String getLocalVariableName(int bcIndex, int localNumber) { return getClassReader().getCP().getCPUtf8(nameIndex); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } } @@ -330,8 +329,7 @@ public boolean hasLocalVariableTable() { return false; } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/classLoader/ShrikeClass.java b/core/src/main/java/com/ibm/wala/classLoader/ShrikeClass.java index 16d0f27136..7d00ac4917 100644 --- a/core/src/main/java/com/ibm/wala/classLoader/ShrikeClass.java +++ b/core/src/main/java/com/ibm/wala/classLoader/ShrikeClass.java @@ -198,8 +198,7 @@ public ClassReader getReader() { return reader.get(); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/core/util/strings/UTF8Convert.java b/core/src/main/java/com/ibm/wala/core/util/strings/UTF8Convert.java index b624aa8533..ac5da0bef5 100644 --- a/core/src/main/java/com/ibm/wala/core/util/strings/UTF8Convert.java +++ b/core/src/main/java/com/ibm/wala/core/util/strings/UTF8Convert.java @@ -205,8 +205,7 @@ public static String fromUTF8(ImmutableByteArray s) { return fromUTF8(s.b); } catch (UTFDataFormatException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } } diff --git a/core/src/main/java/com/ibm/wala/dataflow/IFDS/BackwardsSupergraph.java b/core/src/main/java/com/ibm/wala/dataflow/IFDS/BackwardsSupergraph.java index 07a302ae34..01cdf6e5a1 100644 --- a/core/src/main/java/com/ibm/wala/dataflow/IFDS/BackwardsSupergraph.java +++ b/core/src/main/java/com/ibm/wala/dataflow/IFDS/BackwardsSupergraph.java @@ -319,8 +319,7 @@ public int getMaxNumber() { @Override public Iterator iterateNodes(IntSet s) throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override @@ -330,7 +329,6 @@ public IntSet getSuccNodeNumbers(T node) { @Override public IntSet getPredNodeNumbers(Object node) throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/dataflow/IFDS/ICFGSupergraph.java b/core/src/main/java/com/ibm/wala/dataflow/IFDS/ICFGSupergraph.java index cb2db81641..394d77c553 100644 --- a/core/src/main/java/com/ibm/wala/dataflow/IFDS/ICFGSupergraph.java +++ b/core/src/main/java/com/ibm/wala/dataflow/IFDS/ICFGSupergraph.java @@ -122,8 +122,7 @@ public int getLocalBlockNumber(BasicBlockInContext n) { } public BasicBlockInContext getMainEntry() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override @@ -134,8 +133,7 @@ public Iterator> getNormalSuccessors( @Override public int getNumberOfBlocks(CGNode procedure) { - Assertions.UNREACHABLE(); - return 0; + return Assertions.UNREACHABLE(); } @Override @@ -281,8 +279,7 @@ public int getNumber(BasicBlockInContext N) { @Override public Iterator> iterateNodes(IntSet s) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/core/src/main/java/com/ibm/wala/demandpa/flowgraph/SimpleDemandPointerFlowGraph.java b/core/src/main/java/com/ibm/wala/demandpa/flowgraph/SimpleDemandPointerFlowGraph.java index 42ccfc2adf..d1bb91d2f1 100644 --- a/core/src/main/java/com/ibm/wala/demandpa/flowgraph/SimpleDemandPointerFlowGraph.java +++ b/core/src/main/java/com/ibm/wala/demandpa/flowgraph/SimpleDemandPointerFlowGraph.java @@ -186,8 +186,7 @@ protected HeapModel getHeapModel() { @Override public IntSet getPredNodeNumbers(Object node) throws UnimplementedError { if (node instanceof StaticFieldKey) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } else { return super.getPredNodeNumbers(node); } @@ -211,8 +210,7 @@ public IntSet getSuccNodeNumbers(Object node) throws IllegalArgumentException { @Override public int getPredNodeCount(Object N) throws UnimplementedError { if (N instanceof StaticFieldKey) { - Assertions.UNREACHABLE(); - return -1; + return Assertions.UNREACHABLE(); } else { return super.getPredNodeCount(N); } @@ -236,8 +234,7 @@ public Iterator getPredNodes(Object N) throws IllegalArgumentException { @Override public int getSuccNodeCount(Object N) throws UnimplementedError { if (N instanceof StaticFieldKey) { - Assertions.UNREACHABLE(); - return -1; + return Assertions.UNREACHABLE(); } else { return super.getSuccNodeCount(N); } diff --git a/core/src/main/java/com/ibm/wala/demandpa/util/ArrayContents.java b/core/src/main/java/com/ibm/wala/demandpa/util/ArrayContents.java index c6a25e2be6..03bc678857 100644 --- a/core/src/main/java/com/ibm/wala/demandpa/util/ArrayContents.java +++ b/core/src/main/java/com/ibm/wala/demandpa/util/ArrayContents.java @@ -67,38 +67,32 @@ private ArrayContents() {} @Override public TypeReference getFieldTypeReference() throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override public boolean isFinal() throws UnimplementedError { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } @Override public boolean isPrivate() throws UnimplementedError { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } @Override public boolean isProtected() throws UnimplementedError { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } @Override public boolean isPublic() throws UnimplementedError { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } @Override public boolean isStatic() throws UnimplementedError { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } @Override @@ -108,8 +102,7 @@ public IClass getDeclaringClass() throws UnsupportedOperationException { @Override public Atom getName() throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override @@ -124,8 +117,7 @@ public boolean isVolatile() { @Override public ClassHierarchy getClassHierarchy() throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/core/src/main/java/com/ibm/wala/escape/LocalLiveRangeAnalysis.java b/core/src/main/java/com/ibm/wala/escape/LocalLiveRangeAnalysis.java index b7319d6393..67098ed6db 100644 --- a/core/src/main/java/com/ibm/wala/escape/LocalLiveRangeAnalysis.java +++ b/core/src/main/java/com/ibm/wala/escape/LocalLiveRangeAnalysis.java @@ -120,15 +120,14 @@ private static SSACFG.BasicBlock findBlock(IR ir, SSAInstruction s) { Assertions.UNREACHABLE(); } for (ISSABasicBlock issaBasicBlock : ir.getControlFlowGraph()) { - SSACFG.BasicBlock b = (SSACFG.BasicBlock) issaBasicBlock; + BasicBlock b = (BasicBlock) issaBasicBlock; for (SSAInstruction x : b) { if (s.equals(x)) { return b; } } } - Assertions.UNREACHABLE("no block for " + s + " in IR " + ir); - return null; + return Assertions.UNREACHABLE("no block for " + s + " in IR " + ir); } /** @@ -138,12 +137,11 @@ private static SSACFG.BasicBlock findBlock(IR ir, SSAInstruction s) { */ private static ISSABasicBlock findBlock(IR ir, int i) { for (ISSABasicBlock issaBasicBlock : ir.getControlFlowGraph()) { - SSACFG.BasicBlock b = (SSACFG.BasicBlock) issaBasicBlock; + BasicBlock b = (BasicBlock) issaBasicBlock; if (i >= b.getFirstInstructionIndex() && i <= b.getLastInstructionIndex()) { return b; } } - Assertions.UNREACHABLE("no block for " + i + " in IR " + ir); - return null; + return Assertions.UNREACHABLE("no block for " + i + " in IR " + ir); } } diff --git a/core/src/main/java/com/ibm/wala/examples/drivers/PDFSDG.java b/core/src/main/java/com/ibm/wala/examples/drivers/PDFSDG.java index 802a0e742b..7085aa22d0 100644 --- a/core/src/main/java/com/ibm/wala/examples/drivers/PDFSDG.java +++ b/core/src/main/java/com/ibm/wala/examples/drivers/PDFSDG.java @@ -88,8 +88,7 @@ public static DataDependenceOptions getDataDependenceOptions(Properties p) { return result; } } - Assertions.UNREACHABLE("unknown data datapendence option: " + d); - return null; + return Assertions.UNREACHABLE("unknown data datapendence option: " + d); } public static ControlDependenceOptions getControlDependenceOptions(Properties p) { @@ -99,8 +98,7 @@ public static ControlDependenceOptions getControlDependenceOptions(Properties p) return result; } } - Assertions.UNREACHABLE("unknown control datapendence option: " + d); - return null; + return Assertions.UNREACHABLE("unknown control datapendence option: " + d); } /** diff --git a/core/src/main/java/com/ibm/wala/ipa/callgraph/AnalysisScope.java b/core/src/main/java/com/ibm/wala/ipa/callgraph/AnalysisScope.java index 2ce824c3fa..b7c393261e 100644 --- a/core/src/main/java/com/ibm/wala/ipa/callgraph/AnalysisScope.java +++ b/core/src/main/java/com/ibm/wala/ipa/callgraph/AnalysisScope.java @@ -467,8 +467,7 @@ public String getJavaLibraryVersion() throws IllegalStateException { } return result; } catch (java.io.IOException e) { - Assertions.UNREACHABLE("error getting rt.jar manifest!"); - return null; + return Assertions.UNREACHABLE("error getting rt.jar manifest!"); } } diff --git a/core/src/main/java/com/ibm/wala/ipa/callgraph/ContextUtil.java b/core/src/main/java/com/ibm/wala/ipa/callgraph/ContextUtil.java index d6f2a0cd77..86e7c2e51f 100644 --- a/core/src/main/java/com/ibm/wala/ipa/callgraph/ContextUtil.java +++ b/core/src/main/java/com/ibm/wala/ipa/callgraph/ContextUtil.java @@ -37,8 +37,7 @@ public static IClass getConcreteClassFromContext(Context c) { } else if (item instanceof InstanceKey instanceKey) { return instanceKey.concreteType(); } else { - Assertions.UNREACHABLE("Unexpected: " + item.getClass()); - return null; + return Assertions.UNREACHABLE("Unexpected: " + item.getClass()); } } } diff --git a/core/src/main/java/com/ibm/wala/ipa/callgraph/cha/ContextInsensitiveCHAContextInterpreter.java b/core/src/main/java/com/ibm/wala/ipa/callgraph/cha/ContextInsensitiveCHAContextInterpreter.java index da8bcd4f76..04c8a665c3 100644 --- a/core/src/main/java/com/ibm/wala/ipa/callgraph/cha/ContextInsensitiveCHAContextInterpreter.java +++ b/core/src/main/java/com/ibm/wala/ipa/callgraph/cha/ContextInsensitiveCHAContextInterpreter.java @@ -34,8 +34,7 @@ public Iterator iterateCallSites(CGNode node) { return CodeScanner.getCallSites(node.getMethod()).iterator(); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/ipa/callgraph/impl/FakeRootClass.java b/core/src/main/java/com/ibm/wala/ipa/callgraph/impl/FakeRootClass.java index 11ef487c0a..5698c9d89b 100644 --- a/core/src/main/java/com/ibm/wala/ipa/callgraph/impl/FakeRootClass.java +++ b/core/src/main/java/com/ibm/wala/ipa/callgraph/impl/FakeRootClass.java @@ -190,8 +190,7 @@ public IField getField(Atom name) { */ @Override public IMethod getClassInitializer() throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } /** diff --git a/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/PointerAnalysisImpl.java b/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/PointerAnalysisImpl.java index acc6b796a5..453d9de406 100644 --- a/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/PointerAnalysisImpl.java +++ b/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/PointerAnalysisImpl.java @@ -225,17 +225,16 @@ private OrdinalSet computeImplicitPointsToSet(PointerKey key) { if (v.pointsToSet != null) { return v.pointsToSet; } else { - Assertions.UNREACHABLE("saw " + key + ": time to implement for " + def.getClass()); - return null; + return Assertions.UNREACHABLE( + "saw " + key + ": time to implement for " + def.getClass()); } } else { - Assertions.UNREACHABLE("unexpected null def for " + key); - return null; + return Assertions.UNREACHABLE("unexpected null def for " + key); } } } else { - Assertions.UNREACHABLE("unexpected implicit key " + key + " that's not a local pointer key"); - return null; + return Assertions.UNREACHABLE( + "unexpected implicit key " + key + " that's not a local pointer key"); } } @@ -411,8 +410,7 @@ private OrdinalSet computeImplicitPointsToSetAtCall( if (lpk.getValueNumber() == exc) { return computeImplicitExceptionsForCall(node, call); } else { - Assertions.UNREACHABLE("time to implement me."); - return null; + return Assertions.UNREACHABLE("time to implement me."); } } diff --git a/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/PointerKeyComparator.java b/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/PointerKeyComparator.java index 8f3c94407b..1d0d56c60f 100644 --- a/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/PointerKeyComparator.java +++ b/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/PointerKeyComparator.java @@ -199,8 +199,7 @@ else if (key1 instanceof ArrayContentsKey contentsKey) { protected int compareOtherKeys(Object key1, Object key2) { System.err.println("Cannot compare " + key1 + " and " + key2); - Assertions.UNREACHABLE(); - return 0; + return Assertions.UNREACHABLE(); } @Override diff --git a/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/PropagationGraph.java b/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/PropagationGraph.java index 2c7a469d3e..1385741f5d 100644 --- a/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/PropagationGraph.java +++ b/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/PropagationGraph.java @@ -917,8 +917,7 @@ public void removeNode(PointsToSetVariable n) { */ @Override public boolean containsNode(PointsToSetVariable N) { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } /** @@ -1064,8 +1063,7 @@ protected NumberedNodeManager getNodeManager() { */ @Override protected NumberedEdgeManager getEdgeManager() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/ContextInsensitiveRTAInterpreter.java b/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/ContextInsensitiveRTAInterpreter.java index ea9c1e4a45..8dfd39ea61 100644 --- a/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/ContextInsensitiveRTAInterpreter.java +++ b/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/ContextInsensitiveRTAInterpreter.java @@ -47,8 +47,7 @@ public Iterator iterateNewSites(CGNode node) { return CodeScanner.getNewSites(node.getMethod()).iterator(); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } @@ -61,8 +60,7 @@ public Iterator iterateFieldsRead(CGNode node) { return CodeScanner.getFieldsRead(node.getMethod()).iterator(); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } @@ -75,8 +73,7 @@ public Iterator iterateFieldsWritten(CGNode node) { return CodeScanner.getFieldsWritten(node.getMethod()).iterator(); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/RTASelectorKey.java b/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/RTASelectorKey.java index 53eca64dd4..ae08c4bebd 100644 --- a/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/RTASelectorKey.java +++ b/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/RTASelectorKey.java @@ -53,7 +53,6 @@ public String toString() { * @see com.ibm.wala.ipa.callgraph.propagation.FilteredPointerKey#getTypeFilter() */ public IClass getTypeFilter() throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedHeapModel.java b/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedHeapModel.java index 782cde92ed..6e1a71518a 100644 --- a/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedHeapModel.java +++ b/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedHeapModel.java @@ -207,22 +207,19 @@ public InstanceKey getInstanceKeyForConstant(TypeReference type, Object S) { } public String getStringConstantForInstanceKey() throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override public InstanceKey getInstanceKeyForPEI(CGNode node, ProgramCounter instr, TypeReference type) throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override public InstanceKey getInstanceKeyForMetadataObject(Object obj, TypeReference objType) throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } /** @@ -247,12 +244,10 @@ public FilteredPointerKey getPointerKeyForLocal(CGNode node, int valueNumber) { return pointerKeys.getFilteredPointerKeyForLocal( node, valueNumber, new FilteredPointerKey.SingleClassFilter(c.concreteType())); } else { - Assertions.UNREACHABLE("need to handle " + result.getClass()); - return null; + return Assertions.UNREACHABLE("need to handle " + result.getClass()); } } else { - Assertions.UNREACHABLE("need to handle " + result.getClass()); - return null; + return Assertions.UNREACHABLE("need to handle " + result.getClass()); } } } @@ -261,8 +256,7 @@ public FilteredPointerKey getPointerKeyForLocal(CGNode node, int valueNumber) { public FilteredPointerKey getFilteredPointerKeyForLocal( CGNode node, int valueNumber, FilteredPointerKey.TypeFilter filter) throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedPointerAnalysis.java b/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedPointerAnalysis.java index 4598c1a454..f081df01a9 100644 --- a/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedPointerAnalysis.java +++ b/core/src/main/java/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedPointerAnalysis.java @@ -165,8 +165,7 @@ private IClass inferType(PointerKey key) { .getClassHierarchy() .lookupClass(r.getNode().getMethod().getReturnType()); } else { - Assertions.UNREACHABLE("inferType " + key.getClass()); - return null; + return Assertions.UNREACHABLE("inferType " + key.getClass()); } } diff --git a/core/src/main/java/com/ibm/wala/ipa/callgraph/util/CallGraphSearchUtil.java b/core/src/main/java/com/ibm/wala/ipa/callgraph/util/CallGraphSearchUtil.java index 424797e4ee..6a0da9ba3e 100644 --- a/core/src/main/java/com/ibm/wala/ipa/callgraph/util/CallGraphSearchUtil.java +++ b/core/src/main/java/com/ibm/wala/ipa/callgraph/util/CallGraphSearchUtil.java @@ -50,8 +50,7 @@ public static CGNode findMethod(CallGraph cg, Descriptor d, Atom name) { return n; } } - Assertions.UNREACHABLE("failed to find method " + name); - return null; + return Assertions.UNREACHABLE("failed to find method " + name); } /** @@ -70,7 +69,6 @@ public static CGNode findMethod(CallGraph cg, String name) { } } System.err.println("call graph " + cg); - Assertions.UNREACHABLE("failed to find method " + name); - return null; + return Assertions.UNREACHABLE("failed to find method " + name); } } diff --git a/core/src/main/java/com/ibm/wala/ipa/cfg/AbstractInterproceduralCFG.java b/core/src/main/java/com/ibm/wala/ipa/cfg/AbstractInterproceduralCFG.java index 1a97eae0c2..929b819f0f 100644 --- a/core/src/main/java/com/ibm/wala/ipa/cfg/AbstractInterproceduralCFG.java +++ b/core/src/main/java/com/ibm/wala/ipa/cfg/AbstractInterproceduralCFG.java @@ -783,8 +783,7 @@ public int getMaxNumber() { @Override public Iterator> iterateNodes(IntSet s) throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/core/src/main/java/com/ibm/wala/ipa/cha/ClassHierarchy.java b/core/src/main/java/com/ibm/wala/ipa/cha/ClassHierarchy.java index ad96b68e2d..71d0c5d702 100644 --- a/core/src/main/java/com/ibm/wala/ipa/cha/ClassHierarchy.java +++ b/core/src/main/java/com/ibm/wala/ipa/cha/ClassHierarchy.java @@ -822,9 +822,8 @@ public IClass getLeastCommonSuperclass(IClass a, IClass b) { } Set superA; superA = getSuperclasses(a); - Assertions.UNREACHABLE( + return Assertions.UNREACHABLE( "getLeastCommonSuperclass " + tempA + ' ' + b + ": " + superA + ", " + superB); - return null; } } @@ -1161,8 +1160,7 @@ public IClassLoader getLoader(ClassLoaderReference loaderRef) { return loader; } } - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/core/src/main/java/com/ibm/wala/ipa/modref/GenReach.java b/core/src/main/java/com/ibm/wala/ipa/modref/GenReach.java index aa8c2df949..d53364ca45 100644 --- a/core/src/main/java/com/ibm/wala/ipa/modref/GenReach.java +++ b/core/src/main/java/com/ibm/wala/ipa/modref/GenReach.java @@ -94,8 +94,7 @@ public boolean hasNodeTransferFunctions() { @Override public UnaryOperator getEdgeTransferFunction(T src, T dst) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } } diff --git a/core/src/main/java/com/ibm/wala/ipa/slicer/HeapReachingDefs.java b/core/src/main/java/com/ibm/wala/ipa/slicer/HeapReachingDefs.java index fac7b1c0d9..95a05d80e5 100644 --- a/core/src/main/java/com/ibm/wala/ipa/slicer/HeapReachingDefs.java +++ b/core/src/main/java/com/ibm/wala/ipa/slicer/HeapReachingDefs.java @@ -255,14 +255,12 @@ public void clear() { @Override public boolean containsKey(Object key) { - Assertions.UNREACHABLE(); - return delegate.containsKey(key); + return Assertions.UNREACHABLE(); } @Override public boolean containsValue(Object value) { - Assertions.UNREACHABLE(); - return delegate.containsValue(value); + return Assertions.UNREACHABLE(); } @Override @@ -272,8 +270,7 @@ public Set>> entrySet() { @Override public boolean equals(Object o) { - Assertions.UNREACHABLE(); - return delegate.equals(o); + return Assertions.UNREACHABLE(); } @Override @@ -283,14 +280,12 @@ public OrdinalSet get(Object key) { @Override public int hashCode() { - Assertions.UNREACHABLE(); - return delegate.hashCode(); + return Assertions.UNREACHABLE(); } @Override public boolean isEmpty() { - Assertions.UNREACHABLE(); - return delegate.isEmpty(); + return Assertions.UNREACHABLE(); } @Override @@ -300,8 +295,7 @@ public Set keySet() { @Override public OrdinalSet put(Statement key, OrdinalSet value) { - Assertions.UNREACHABLE(); - return delegate.put(key, value); + return Assertions.UNREACHABLE(); } @Override @@ -312,20 +306,17 @@ public void putAll(Map> t) @Override public OrdinalSet remove(Object key) { - Assertions.UNREACHABLE(); - return delegate.remove(key); + return Assertions.UNREACHABLE(); } @Override public int size() { - Assertions.UNREACHABLE(); - return delegate.size(); + return Assertions.UNREACHABLE(); } @Override public Collection> values() { - Assertions.UNREACHABLE(); - return delegate.values(); + return Assertions.UNREACHABLE(); } /** For a statement s, compute the set of statements that may def the heap value read by s. */ @@ -425,8 +416,7 @@ OrdinalSet computeResult( return OrdinalSet.empty(); } default -> { - Assertions.UNREACHABLE(s.getKind().toString()); - return null; + return Assertions.UNREACHABLE(s.getKind().toString()); } } } diff --git a/core/src/main/java/com/ibm/wala/ipa/slicer/PDG.java b/core/src/main/java/com/ibm/wala/ipa/slicer/PDG.java index c05624bfd3..bc453390ef 100644 --- a/core/src/main/java/com/ibm/wala/ipa/slicer/PDG.java +++ b/core/src/main/java/com/ibm/wala/ipa/slicer/PDG.java @@ -725,8 +725,7 @@ private static int getBasePointer(SSAInstruction use) { } else if (use instanceof SSAArrayLengthInstruction s) { return s.getArrayRef(); } else { - Assertions.UNREACHABLE("BOOM"); - return -1; + return Assertions.UNREACHABLE("BOOM"); } } @@ -1046,8 +1045,7 @@ public int hashCode() { @Override public int getPredNodeCount(Statement N) throws UnimplementedError { populate(); - Assertions.UNREACHABLE(); - return delegate.getPredNodeCount(N); + return Assertions.UNREACHABLE(); } @Override @@ -1106,8 +1104,7 @@ private void computeOutgoingHeapDependencies(Statement N) { @Override public int getSuccNodeCount(Statement N) throws UnimplementedError { populate(); - Assertions.UNREACHABLE(); - return delegate.getSuccNodeCount(N); + return Assertions.UNREACHABLE(); } @Override @@ -1209,20 +1206,17 @@ public int getNumber(Statement N) { @Override public Iterator iterateNodes(IntSet s) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override public IntSet getPredNodeNumbers(Statement node) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override public IntSet getSuccNodeNumbers(Statement node) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/core/src/main/java/com/ibm/wala/ipa/slicer/SDG.java b/core/src/main/java/com/ibm/wala/ipa/slicer/SDG.java index 26450010a4..df81ad06ad 100644 --- a/core/src/main/java/com/ibm/wala/ipa/slicer/SDG.java +++ b/core/src/main/java/com/ibm/wala/ipa/slicer/SDG.java @@ -240,8 +240,7 @@ public int getNumber(Statement s) { @Override public Iterator iterateNodes(IntSet s) { - Assertions.UNREACHABLE(); - return super.iterateNodes(s); + return Assertions.UNREACHABLE(); } @Override @@ -438,8 +437,7 @@ public Iterator getPredNodes(Statement N) { return result.iterator(); } default -> { - Assertions.UNREACHABLE(N.getKind().toString()); - return null; + return Assertions.UNREACHABLE(N.getKind().toString()); } } } @@ -598,8 +596,7 @@ public Iterator getSuccNodes(Statement N) { return result.iterator(); } default -> { - Assertions.UNREACHABLE(N.getKind().toString()); - return null; + return Assertions.UNREACHABLE(N.getKind().toString()); } } } @@ -771,8 +768,7 @@ public Set getEdgeLabels(Statement src, Statement dst) { } } default -> { - Assertions.UNREACHABLE(src.getKind()); - return Collections.emptySet(); + return Assertions.UNREACHABLE(src.getKind()); } } } diff --git a/core/src/main/java/com/ibm/wala/ipa/slicer/SDGSupergraph.java b/core/src/main/java/com/ibm/wala/ipa/slicer/SDGSupergraph.java index 4bb31822f2..32f13f608f 100644 --- a/core/src/main/java/com/ibm/wala/ipa/slicer/SDGSupergraph.java +++ b/core/src/main/java/com/ibm/wala/ipa/slicer/SDGSupergraph.java @@ -37,19 +37,16 @@ public SDGSupergraph(ISDG sdg, boolean backward) { @Override public Graph> getProcedureGraph() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } public Object[] getEntry() { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override public byte classifyEdge(Statement src, Statement dest) { - Assertions.UNREACHABLE(); - return 0; + return Assertions.UNREACHABLE(); } @Override @@ -75,8 +72,7 @@ public Iterator getCallSites( return pdg.getCallStatements(call).iterator(); } default -> { - Assertions.UNREACHABLE(r.getKind().toString()); - return null; + return Assertions.UNREACHABLE(r.getKind().toString()); } } } @@ -127,15 +123,13 @@ public Iterator getNormalSuccessors(Statement call) { if (!backward) { return EmptyIterator.instance(); } else { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } @Override public int getNumberOfBlocks(PDG procedure) { - Assertions.UNREACHABLE(); - return 0; + return Assertions.UNREACHABLE(); } @Override @@ -171,8 +165,7 @@ public Iterator getReturnSites( return pdg.getCallerReturnStatements(st).iterator(); } default -> { - Assertions.UNREACHABLE(call.getKind().toString()); - return null; + return Assertions.UNREACHABLE(call.getKind().toString()); } } } @@ -207,8 +200,7 @@ public boolean isCall(Statement n) { } } default -> { - Assertions.UNREACHABLE(n.getKind() + " " + n); - return false; + return Assertions.UNREACHABLE(n.getKind() + " " + n); } } } @@ -298,8 +290,7 @@ public boolean containsNode(Statement N) { @Override public int getNumberOfNodes() { - Assertions.UNREACHABLE(); - return 0; + return Assertions.UNREACHABLE(); } @Override @@ -324,8 +315,7 @@ public void addEdge(Statement src, Statement dst) { @Override public int getPredNodeCount(Statement N) { - Assertions.UNREACHABLE(); - return 0; + return Assertions.UNREACHABLE(); } @Override @@ -335,8 +325,7 @@ public Iterator getPredNodes(Statement N) { @Override public int getSuccNodeCount(Statement N) { - Assertions.UNREACHABLE(); - return 0; + return Assertions.UNREACHABLE(); } @Override @@ -386,8 +375,7 @@ public int getNumber(Statement N) { @Override public Iterator iterateNodes(IntSet s) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/core/src/main/java/com/ibm/wala/ipa/slicer/SliceFunctions.java b/core/src/main/java/com/ibm/wala/ipa/slicer/SliceFunctions.java index aef8a99cc1..265407ec66 100644 --- a/core/src/main/java/com/ibm/wala/ipa/slicer/SliceFunctions.java +++ b/core/src/main/java/com/ibm/wala/ipa/slicer/SliceFunctions.java @@ -51,8 +51,7 @@ public IUnaryFlowFunction getCallNoneToReturnFlowFunction(Statement src, Stateme } } default -> { - Assertions.UNREACHABLE(src.getKind().toString()); - return null; + return Assertions.UNREACHABLE(src.getKind().toString()); } } } diff --git a/core/src/main/java/com/ibm/wala/ipa/slicer/SlicerUtil.java b/core/src/main/java/com/ibm/wala/ipa/slicer/SlicerUtil.java index f3d8f9eb03..77931e30d5 100644 --- a/core/src/main/java/com/ibm/wala/ipa/slicer/SlicerUtil.java +++ b/core/src/main/java/com/ibm/wala/ipa/slicer/SlicerUtil.java @@ -46,8 +46,7 @@ public static Statement findCallTo(CGNode n, String methodName) { } } } - Assertions.UNREACHABLE("failed to find call to " + methodName + " in " + n); - return null; + return Assertions.UNREACHABLE("failed to find call to " + methodName + " in " + n); } /** @@ -65,8 +64,7 @@ public static Statement findFirstAllocation(CGNode n) { return new NormalStatement(n, i); } } - Assertions.UNREACHABLE("failed to find allocation in " + n); - return null; + return Assertions.UNREACHABLE("failed to find allocation in " + n); } public static void dumpSlice(Collection slice) { diff --git a/core/src/main/java/com/ibm/wala/ipa/slicer/thin/CISDG.java b/core/src/main/java/com/ibm/wala/ipa/slicer/thin/CISDG.java index d17568b501..1043e3ab74 100644 --- a/core/src/main/java/com/ibm/wala/ipa/slicer/thin/CISDG.java +++ b/core/src/main/java/com/ibm/wala/ipa/slicer/thin/CISDG.java @@ -85,14 +85,12 @@ public boolean containsNode(Statement N) { @Override public boolean equals(Object obj) { - Assertions.UNREACHABLE(); - return noHeap.equals(obj); + return Assertions.UNREACHABLE(); } @Override public ControlDependenceOptions getCOptions() { - Assertions.UNREACHABLE(); - return noHeap.getCOptions(); + return Assertions.UNREACHABLE(); } @Override @@ -102,8 +100,7 @@ public int getMaxNumber() { @Override public Statement getNode(int number) { - Assertions.UNREACHABLE(); - return noHeap.getNode(number); + return Assertions.UNREACHABLE(); } @Override @@ -118,8 +115,7 @@ public int getNumberOfNodes() { @Override public PDG getPDG(CGNode node) { - Assertions.UNREACHABLE(); - return noHeap.getPDG(node); + return Assertions.UNREACHABLE(); } @Override @@ -129,8 +125,7 @@ public int getPredNodeCount(Statement N) { @Override public IntSet getPredNodeNumbers(Statement node) { - Assertions.UNREACHABLE(); - return noHeap.getPredNodeNumbers(node); + return Assertions.UNREACHABLE(); } @Override @@ -159,8 +154,7 @@ public int getSuccNodeCount(Statement N) { @Override public IntSet getSuccNodeNumbers(Statement node) { - Assertions.UNREACHABLE(); - return noHeap.getSuccNodeNumbers(node); + return Assertions.UNREACHABLE(); } @Override @@ -184,20 +178,17 @@ public Iterator getSuccNodes(Statement N) { @Override public boolean hasEdge(Statement src, Statement dst) { - Assertions.UNREACHABLE(); - return noHeap.hasEdge(src, dst); + return Assertions.UNREACHABLE(); } @Override public int hashCode() { - Assertions.UNREACHABLE(); - return noHeap.hashCode(); + return Assertions.UNREACHABLE(); } @Override public Iterator iterateLazyNodes() { - Assertions.UNREACHABLE(); - return noHeap.iterateLazyNodes(); + return Assertions.UNREACHABLE(); } @Override @@ -212,8 +203,7 @@ public Stream stream() { @Override public Iterator iterateNodes(IntSet s) { - Assertions.UNREACHABLE(); - return noHeap.iterateNodes(s); + return Assertions.UNREACHABLE(); } @Override @@ -254,8 +244,7 @@ public void removeOutgoingEdges(Statement node) { @Override public String toString() { - Assertions.UNREACHABLE(); - return noHeap.toString(); + return Assertions.UNREACHABLE(); } @Override diff --git a/core/src/main/java/com/ibm/wala/ipa/summaries/BypassSyntheticClass.java b/core/src/main/java/com/ibm/wala/ipa/summaries/BypassSyntheticClass.java index d57d1f4b6d..368460ecde 100644 --- a/core/src/main/java/com/ibm/wala/ipa/summaries/BypassSyntheticClass.java +++ b/core/src/main/java/com/ibm/wala/ipa/summaries/BypassSyntheticClass.java @@ -190,8 +190,7 @@ public int hashCode() { */ @Override public int getModifiers() throws UnimplementedError { - Assertions.UNREACHABLE(); - return 0; + return Assertions.UNREACHABLE(); } /** @@ -207,8 +206,7 @@ public boolean isReferenceType() { */ @Override public Collection getDirectInterfaces() throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } /** diff --git a/core/src/main/java/com/ibm/wala/ssa/DefaultIRFactory.java b/core/src/main/java/com/ibm/wala/ssa/DefaultIRFactory.java index 86d8a31f5f..0e983ee744 100644 --- a/core/src/main/java/com/ibm/wala/ssa/DefaultIRFactory.java +++ b/core/src/main/java/com/ibm/wala/ssa/DefaultIRFactory.java @@ -44,8 +44,7 @@ public class DefaultIRFactory implements IRFactory { final IBytecodeMethod castMethod = (IBytecodeMethod) method; return shrikeFactory.makeCFG(castMethod); } else { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } @@ -61,8 +60,7 @@ public IR makeIR(IMethod method, Context c, SSAOptions options) throws IllegalAr final IBytecodeMethod castMethod = (IBytecodeMethod) method; return shrikeFactory.makeIR(castMethod, c, options); } else { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/ssa/SSAAddressOfInstruction.java b/core/src/main/java/com/ibm/wala/ssa/SSAAddressOfInstruction.java index bc2c83a91f..4ce609bc95 100644 --- a/core/src/main/java/com/ibm/wala/ssa/SSAAddressOfInstruction.java +++ b/core/src/main/java/com/ibm/wala/ssa/SSAAddressOfInstruction.java @@ -91,8 +91,7 @@ public TypeReference getType() { @Override public SSAInstruction copyForSSA(SSAInstructionFactory insts, int[] defs, int[] uses) { - Assertions.UNREACHABLE("not yet implemented. to be nuked"); - return null; + return Assertions.UNREACHABLE("not yet implemented. to be nuked"); } @Override diff --git a/core/src/main/java/com/ibm/wala/ssa/SSABuilder.java b/core/src/main/java/com/ibm/wala/ssa/SSABuilder.java index dc9da4115d..89d0de2341 100644 --- a/core/src/main/java/com/ibm/wala/ssa/SSABuilder.java +++ b/core/src/main/java/com/ibm/wala/ssa/SSABuilder.java @@ -984,8 +984,7 @@ public com.ibm.wala.shrike.shrikeBT.IInstruction[] getInstructions() { return shrikeCFG.getMethod().getInstructions(); } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } } @@ -1068,8 +1067,7 @@ public String[] getLocalNames(int index, int vn) { } } catch (Exception e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/core/src/main/java/com/ibm/wala/ssa/SSACFG.java b/core/src/main/java/com/ibm/wala/ssa/SSACFG.java index 7859bc3c4c..a34c948c44 100644 --- a/core/src/main/java/com/ibm/wala/ssa/SSACFG.java +++ b/core/src/main/java/com/ibm/wala/ssa/SSACFG.java @@ -1085,8 +1085,7 @@ public IntSet getSuccNodeNumbers(ISSABasicBlock b) throws IllegalArgumentExcepti @Override public IntSet getPredNodeNumbers(ISSABasicBlock node) throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } /** A warning for when we fail to resolve the type for a checkcast */ diff --git a/core/src/main/java/com/ibm/wala/ssa/SSALoadIndirectInstruction.java b/core/src/main/java/com/ibm/wala/ssa/SSALoadIndirectInstruction.java index 6d01b37ad8..725a8a9aa8 100644 --- a/core/src/main/java/com/ibm/wala/ssa/SSALoadIndirectInstruction.java +++ b/core/src/main/java/com/ibm/wala/ssa/SSALoadIndirectInstruction.java @@ -37,8 +37,7 @@ public TypeReference getLoadedType() { @Override public SSAInstruction copyForSSA(SSAInstructionFactory insts, int[] defs, int[] uses) { - Assertions.UNREACHABLE("not implemented"); - return null; + return Assertions.UNREACHABLE("not implemented"); } @Override diff --git a/core/src/main/java/com/ibm/wala/ssa/SSAStoreIndirectInstruction.java b/core/src/main/java/com/ibm/wala/ssa/SSAStoreIndirectInstruction.java index 740ad7f127..d6c67c1565 100644 --- a/core/src/main/java/com/ibm/wala/ssa/SSAStoreIndirectInstruction.java +++ b/core/src/main/java/com/ibm/wala/ssa/SSAStoreIndirectInstruction.java @@ -44,8 +44,7 @@ public TypeReference getPointeeType() { @Override public SSAInstruction copyForSSA(SSAInstructionFactory insts, int[] defs, int[] uses) { - Assertions.UNREACHABLE("unimplemented"); - return null; + return Assertions.UNREACHABLE("unimplemented"); } @Override diff --git a/core/src/main/java/com/ibm/wala/ssa/SymbolTable.java b/core/src/main/java/com/ibm/wala/ssa/SymbolTable.java index 356c63bd30..393c0813ae 100644 --- a/core/src/main/java/com/ibm/wala/ssa/SymbolTable.java +++ b/core/src/main/java/com/ibm/wala/ssa/SymbolTable.java @@ -458,8 +458,7 @@ public SymbolTable copy() { nt.copy = true; return nt; } catch (CloneNotSupportedException e) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } } diff --git a/core/src/main/java/com/ibm/wala/ssa/analysis/ExplodedControlFlowGraph.java b/core/src/main/java/com/ibm/wala/ssa/analysis/ExplodedControlFlowGraph.java index 17f643f035..b7bcdca1bb 100644 --- a/core/src/main/java/com/ibm/wala/ssa/analysis/ExplodedControlFlowGraph.java +++ b/core/src/main/java/com/ibm/wala/ssa/analysis/ExplodedControlFlowGraph.java @@ -443,8 +443,7 @@ public int getNumber(IExplodedBasicBlock n) throws IllegalArgumentException { @Override public Iterator iterateNodes(IntSet s) throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override @@ -458,8 +457,7 @@ public IntSet getPredNodeNumbers(IExplodedBasicBlock node) { @Override public IntSet getSuccNodeNumbers(IExplodedBasicBlock node) throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } /** diff --git a/core/src/main/java/com/ibm/wala/types/TypeName.java b/core/src/main/java/com/ibm/wala/types/TypeName.java index 4e36eb88f2..8e325989e5 100644 --- a/core/src/main/java/com/ibm/wala/types/TypeName.java +++ b/core/src/main/java/com/ibm/wala/types/TypeName.java @@ -294,8 +294,7 @@ public String toUnicodeString() { return result.toString(); } catch (UTFDataFormatException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } } diff --git a/core/src/main/java/com/ibm/wala/types/generics/TypeVariableSignature.java b/core/src/main/java/com/ibm/wala/types/generics/TypeVariableSignature.java index 3009a95db0..d7445c9dab 100644 --- a/core/src/main/java/com/ibm/wala/types/generics/TypeVariableSignature.java +++ b/core/src/main/java/com/ibm/wala/types/generics/TypeVariableSignature.java @@ -95,8 +95,7 @@ public static int getTypeVariablePosition(TypeVariableSignature v, ShrikeClass k return -1; } catch (InvalidClassFileException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return -1; + return Assertions.UNREACHABLE(); } } } diff --git a/core/src/test/java/com/ibm/wala/core/tests/basic/GraphDataflowTest.java b/core/src/test/java/com/ibm/wala/core/tests/basic/GraphDataflowTest.java index 6fb9e29a40..01b7d9f0be 100644 --- a/core/src/test/java/com/ibm/wala/core/tests/basic/GraphDataflowTest.java +++ b/core/src/test/java/com/ibm/wala/core/tests/basic/GraphDataflowTest.java @@ -140,8 +140,7 @@ public boolean hasNodeTransferFunctions() { @Override public UnaryOperator getEdgeTransferFunction(String from, String to) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } @Override diff --git a/core/src/test/java/com/ibm/wala/core/tests/demandpa/AbstractPtrTest.java b/core/src/test/java/com/ibm/wala/core/tests/demandpa/AbstractPtrTest.java index 617d14c0a6..e728f6a029 100644 --- a/core/src/test/java/com/ibm/wala/core/tests/demandpa/AbstractPtrTest.java +++ b/core/src/test/java/com/ibm/wala/core/tests/demandpa/AbstractPtrTest.java @@ -108,8 +108,7 @@ public static CGNode findMainMethod(CallGraph cg) { return n; } } - Assertions.UNREACHABLE("failed to find method"); - return null; + return Assertions.UNREACHABLE("failed to find method"); } public static CGNode findStaticMethod(CallGraph cg, Atom name, Descriptor args) { @@ -120,8 +119,7 @@ public static CGNode findStaticMethod(CallGraph cg, Atom name, Descriptor args) return n; } } - Assertions.UNREACHABLE("failed to find method"); - return null; + return Assertions.UNREACHABLE("failed to find method"); } public static CGNode findInstanceMethod( @@ -135,8 +133,7 @@ public static CGNode findInstanceMethod( return n; } } - Assertions.UNREACHABLE("failed to find method"); - return null; + return Assertions.UNREACHABLE("failed to find method"); } public static PointerKey getParam(CGNode n, String methodName, HeapModel heapModel) { @@ -154,8 +151,7 @@ public static PointerKey getParam(CGNode n, String methodName, HeapModel heapMod } } } - Assertions.UNREACHABLE("failed to find call to " + methodName + " in " + n); - return null; + return Assertions.UNREACHABLE("failed to find call to " + methodName + " in " + n); } protected void doFlowsToSizeTest(String mainClass, int size) diff --git a/core/src/test/java/com/ibm/wala/core/tests/ptrs/MultiDimArrayTest.java b/core/src/test/java/com/ibm/wala/core/tests/ptrs/MultiDimArrayTest.java index 733d024ae6..3246554007 100644 --- a/core/src/test/java/com/ibm/wala/core/tests/ptrs/MultiDimArrayTest.java +++ b/core/src/test/java/com/ibm/wala/core/tests/ptrs/MultiDimArrayTest.java @@ -76,7 +76,6 @@ private static CGNode findDoNothingNode(CallGraph cg) { return n; } } - Assertions.UNREACHABLE("Unexpected: failed to find doNothing node"); - return null; + return Assertions.UNREACHABLE("Unexpected: failed to find doNothing node"); } } diff --git a/core/src/test/java/com/ibm/wala/core/tests/ptrs/TypeBasedArrayAliasTest.java b/core/src/test/java/com/ibm/wala/core/tests/ptrs/TypeBasedArrayAliasTest.java index 36ef2632ad..b7c65fd9a4 100644 --- a/core/src/test/java/com/ibm/wala/core/tests/ptrs/TypeBasedArrayAliasTest.java +++ b/core/src/test/java/com/ibm/wala/core/tests/ptrs/TypeBasedArrayAliasTest.java @@ -78,8 +78,7 @@ private static CGNode findNode(CallGraph cg, String methodName) { return n; } } - Assertions.UNREACHABLE("Unexpected: failed to find " + methodName + " node"); - return null; + return Assertions.UNREACHABLE("Unexpected: failed to find " + methodName + " node"); } private static Condition> mayAliased( diff --git a/dalvik/src/main/java/com/ibm/wala/dalvik/ssa/DexSSABuilder.java b/dalvik/src/main/java/com/ibm/wala/dalvik/ssa/DexSSABuilder.java index 7e0f2c2c1a..73366e7e24 100644 --- a/dalvik/src/main/java/com/ibm/wala/dalvik/ssa/DexSSABuilder.java +++ b/dalvik/src/main/java/com/ibm/wala/dalvik/ssa/DexSSABuilder.java @@ -1494,8 +1494,7 @@ public String[] getLocalNames(int index, int vn) { } } catch (Exception e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/ide/jdt/src/main/java/com/ibm/wala/ide/util/JdtPosition.java b/ide/jdt/src/main/java/com/ibm/wala/ide/util/JdtPosition.java index 6f55e947b7..4bfad67dbc 100644 --- a/ide/jdt/src/main/java/com/ibm/wala/ide/util/JdtPosition.java +++ b/ide/jdt/src/main/java/com/ibm/wala/ide/util/JdtPosition.java @@ -71,8 +71,7 @@ public URL getURL() { try { return URI.create("file:" + path).toURL(); } catch (MalformedURLException e) { - Assertions.UNREACHABLE(e.toString()); - return null; + return Assertions.UNREACHABLE(e.toString()); } } diff --git a/ide/src/main/java/com/ibm/wala/ide/ui/SWTTreeViewer.java b/ide/src/main/java/com/ibm/wala/ide/ui/SWTTreeViewer.java index 8305e58652..7a6cee8bb8 100644 --- a/ide/src/main/java/com/ibm/wala/ide/ui/SWTTreeViewer.java +++ b/ide/src/main/java/com/ibm/wala/ide/ui/SWTTreeViewer.java @@ -240,8 +240,7 @@ public Object[] getChildren(Object parentElement) { @Override public Object getParent(Object element) { // TODO Auto-generated method stub - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } /* @@ -275,8 +274,7 @@ public String getText(Object element) { return (d == null) ? super.getText(element) : d.getLabel(element); } catch (WalaException e) { e.printStackTrace(); - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } } diff --git a/ide/src/main/java/com/ibm/wala/ide/util/HeadlessUtil.java b/ide/src/main/java/com/ibm/wala/ide/util/HeadlessUtil.java index 89594721f8..da375abcec 100644 --- a/ide/src/main/java/com/ibm/wala/ide/util/HeadlessUtil.java +++ b/ide/src/main/java/com/ibm/wala/ide/util/HeadlessUtil.java @@ -68,8 +68,7 @@ protected static X getProjectFromWorkspace(Function pred) { return result; } } - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } public interface EclipseCompiler { diff --git a/shrike/src/main/java/com/ibm/wala/shrike/shrikeCT/TypeAnnotationsReader.java b/shrike/src/main/java/com/ibm/wala/shrike/shrikeCT/TypeAnnotationsReader.java index 0db6b1a446..6ef1b16d72 100644 --- a/shrike/src/main/java/com/ibm/wala/shrike/shrikeCT/TypeAnnotationsReader.java +++ b/shrike/src/main/java/com/ibm/wala/shrike/shrikeCT/TypeAnnotationsReader.java @@ -295,8 +295,7 @@ private Pair getTypeAnnotationTargetAndSize( return Pair.make(new TypeArgumentTarget(offset, type_argument_index), 3); } default -> { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } } diff --git a/util/src/main/java/com/ibm/wala/fixpoint/UnaryOperator.java b/util/src/main/java/com/ibm/wala/fixpoint/UnaryOperator.java index 8c8d089ad9..6c4d445c53 100644 --- a/util/src/main/java/com/ibm/wala/fixpoint/UnaryOperator.java +++ b/util/src/main/java/com/ibm/wala/fixpoint/UnaryOperator.java @@ -37,7 +37,6 @@ public boolean isIdentity() { @Override public byte evaluate(T lhs, T[] rhs) throws UnimplementedError { // this should never be called. Use the other, more efficient form. - Assertions.UNREACHABLE(); - return 0; + return Assertions.UNREACHABLE(); } } diff --git a/util/src/main/java/com/ibm/wala/util/collections/CompoundIntIterator.java b/util/src/main/java/com/ibm/wala/util/collections/CompoundIntIterator.java index 1364053af2..3e31fc8f4b 100644 --- a/util/src/main/java/com/ibm/wala/util/collections/CompoundIntIterator.java +++ b/util/src/main/java/com/ibm/wala/util/collections/CompoundIntIterator.java @@ -52,7 +52,6 @@ public int next() { @Override public int hashCode() throws UnimplementedError { - Assertions.UNREACHABLE("define a custom hash code to avoid non-determinism"); - return 0; + return Assertions.UNREACHABLE("define a custom hash code to avoid non-determinism"); } } diff --git a/util/src/main/java/com/ibm/wala/util/collections/ObjectArrayMapping.java b/util/src/main/java/com/ibm/wala/util/collections/ObjectArrayMapping.java index ccfe28bcf7..d794a18bce 100644 --- a/util/src/main/java/com/ibm/wala/util/collections/ObjectArrayMapping.java +++ b/util/src/main/java/com/ibm/wala/util/collections/ObjectArrayMapping.java @@ -74,8 +74,7 @@ public Stream stream() { @Override public int add(Object o) throws UnimplementedError { - Assertions.UNREACHABLE(); - return 0; + return Assertions.UNREACHABLE(); } @Override diff --git a/util/src/main/java/com/ibm/wala/util/debug/Assertions.java b/util/src/main/java/com/ibm/wala/util/debug/Assertions.java index 62bdb82cb1..187028e0bc 100644 --- a/util/src/main/java/com/ibm/wala/util/debug/Assertions.java +++ b/util/src/main/java/com/ibm/wala/util/debug/Assertions.java @@ -10,6 +10,8 @@ */ package com.ibm.wala.util.debug; +import org.jetbrains.annotations.Contract; + /** * WALA-specific assertion checking. * @@ -42,7 +44,9 @@ public static void productionAssertion(boolean b) throws UnimplementedError { * * @throws UnimplementedError unconditionally */ - public static void UNREACHABLE() { + @Contract(" -> fail") + @SuppressWarnings("TypeParameterUnusedInFormals") + public static T UNREACHABLE() { throw new UnimplementedError(); } @@ -51,7 +55,9 @@ public static void UNREACHABLE() { * * @throws UnimplementedError unconditionally */ - public static void UNREACHABLE(String string) { + @Contract("_ -> fail") + @SuppressWarnings("TypeParameterUnusedInFormals") + public static T UNREACHABLE(String string) { throw new UnimplementedError(string); } @@ -60,7 +66,9 @@ public static void UNREACHABLE(String string) { * * @throws UnimplementedError unconditionally */ - public static void UNREACHABLE(Object o) { - throw new UnimplementedError(o == null ? "" : o.toString()); + @Contract("_ -> fail") + @SuppressWarnings("TypeParameterUnusedInFormals") + public static T UNREACHABLE(Object o) { + return UNREACHABLE(o == null ? "" : o.toString()); } } diff --git a/util/src/main/java/com/ibm/wala/util/graph/GraphReachability.java b/util/src/main/java/com/ibm/wala/util/graph/GraphReachability.java index 5a8bd61505..1da8b19dc8 100644 --- a/util/src/main/java/com/ibm/wala/util/graph/GraphReachability.java +++ b/util/src/main/java/com/ibm/wala/util/graph/GraphReachability.java @@ -115,8 +115,7 @@ public boolean hasNodeTransferFunctions() { @Override public @Nullable UnaryOperator getEdgeTransferFunction( Object from, Object to) { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } /* diff --git a/util/src/main/java/com/ibm/wala/util/graph/dominators/Dominators.java b/util/src/main/java/com/ibm/wala/util/graph/dominators/Dominators.java index 2f4db95d7b..928884a477 100644 --- a/util/src/main/java/com/ibm/wala/util/graph/dominators/Dominators.java +++ b/util/src/main/java/com/ibm/wala/util/graph/dominators/Dominators.java @@ -199,8 +199,7 @@ public void removeOutgoingEdges(Object node) { @Override public boolean hasEdge(@Nullable Object src, @Nullable Object dst) { // TODO Auto-generated method stub - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } }; }; diff --git a/util/src/main/java/com/ibm/wala/util/intset/BimodalMutableIntSet.java b/util/src/main/java/com/ibm/wala/util/intset/BimodalMutableIntSet.java index a81e6803df..f12e0fc87c 100644 --- a/util/src/main/java/com/ibm/wala/util/intset/BimodalMutableIntSet.java +++ b/util/src/main/java/com/ibm/wala/util/intset/BimodalMutableIntSet.java @@ -163,8 +163,7 @@ public boolean contains(int i) { } else if (that instanceof BitVectorIntSet) { return impl.intersection(that); } else { - Assertions.UNREACHABLE("Unexpected: " + that); - return null; + return Assertions.UNREACHABLE("Unexpected: " + that); } } @@ -326,8 +325,7 @@ public boolean containsAny(IntSet that) throws IllegalArgumentException, Unimple } else if (that instanceof BitVectorIntSet) { return impl.containsAny(that); } else { - Assertions.UNREACHABLE("unsupported " + that.getClass()); - return false; + return Assertions.UNREACHABLE("unsupported " + that.getClass()); } } diff --git a/util/src/main/java/com/ibm/wala/util/intset/BitVectorIntSet.java b/util/src/main/java/com/ibm/wala/util/intset/BitVectorIntSet.java index 46d0da6302..56c157dbf1 100644 --- a/util/src/main/java/com/ibm/wala/util/intset/BitVectorIntSet.java +++ b/util/src/main/java/com/ibm/wala/util/intset/BitVectorIntSet.java @@ -352,8 +352,7 @@ public boolean sameValue(@Nullable IntSet that) } else if (that instanceof MutableSharedBitVectorIntSet mutableSharedBitVectorIntSet) { return sameValue(mutableSharedBitVectorIntSet.makeDenseCopy()); } else { - Assertions.UNREACHABLE("unexpected argument type " + that.getClass()); - return false; + return Assertions.UNREACHABLE("unexpected argument type " + that.getClass()); } } diff --git a/util/src/main/java/com/ibm/wala/util/intset/DebuggingMutableIntSet.java b/util/src/main/java/com/ibm/wala/util/intset/DebuggingMutableIntSet.java index 656d9a597e..d2127e58fb 100644 --- a/util/src/main/java/com/ibm/wala/util/intset/DebuggingMutableIntSet.java +++ b/util/src/main/java/com/ibm/wala/util/intset/DebuggingMutableIntSet.java @@ -124,8 +124,7 @@ public boolean containsAny(IntSet set) { } return ppr; } else { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } } @@ -145,8 +144,7 @@ public boolean containsAny(IntSet set) { return ppr; } else { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } @@ -175,8 +173,7 @@ public boolean sameValue(IntSet that) { return ppr; } else { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } } @@ -193,8 +190,7 @@ public boolean isSubset(IntSet that) { return ppr; } else { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } } @@ -234,8 +230,7 @@ public boolean addAll(IntSet set) { return ppr; } else { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } } @@ -271,8 +266,7 @@ public boolean addAllInIntersection(IntSet other, IntSet filter) { return pr; } else { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } } diff --git a/util/src/main/java/com/ibm/wala/util/intset/DebuggingMutableIntSetFactory.java b/util/src/main/java/com/ibm/wala/util/intset/DebuggingMutableIntSetFactory.java index 698c127269..398dea3d42 100644 --- a/util/src/main/java/com/ibm/wala/util/intset/DebuggingMutableIntSetFactory.java +++ b/util/src/main/java/com/ibm/wala/util/intset/DebuggingMutableIntSetFactory.java @@ -70,8 +70,7 @@ public DebuggingMutableIntSet parse(String string) { return new DebuggingMutableIntSet(pr, sr); } else { - Assertions.UNREACHABLE(); - return null; + return Assertions.UNREACHABLE(); } } diff --git a/util/src/main/java/com/ibm/wala/util/intset/IntSetUtil.java b/util/src/main/java/com/ibm/wala/util/intset/IntSetUtil.java index 7109ed2af9..c24d775462 100644 --- a/util/src/main/java/com/ibm/wala/util/intset/IntSetUtil.java +++ b/util/src/main/java/com/ibm/wala/util/intset/IntSetUtil.java @@ -94,8 +94,7 @@ public static MutableIntSet makeMutableCopy(IntSet set) } else if (set instanceof EmptyIntSet) { return IntSetUtil.make(); } else { - Assertions.UNREACHABLE(set.getClass().toString()); - return null; + return Assertions.UNREACHABLE(set.getClass().toString()); } } diff --git a/util/src/main/java/com/ibm/wala/util/intset/LongSetUtil.java b/util/src/main/java/com/ibm/wala/util/intset/LongSetUtil.java index a61c7591fb..7324bf3900 100644 --- a/util/src/main/java/com/ibm/wala/util/intset/LongSetUtil.java +++ b/util/src/main/java/com/ibm/wala/util/intset/LongSetUtil.java @@ -71,8 +71,7 @@ public static MutableLongSet make() { if (set instanceof SparseLongSet) { return MutableSparseLongSet.make(set); } else { - Assertions.UNREACHABLE(set.getClass().toString()); - return null; + return Assertions.UNREACHABLE(set.getClass().toString()); } } diff --git a/util/src/main/java/com/ibm/wala/util/intset/MutableSharedBitVectorIntSet.java b/util/src/main/java/com/ibm/wala/util/intset/MutableSharedBitVectorIntSet.java index de25a6b3fd..b84b282d9d 100644 --- a/util/src/main/java/com/ibm/wala/util/intset/MutableSharedBitVectorIntSet.java +++ b/util/src/main/java/com/ibm/wala/util/intset/MutableSharedBitVectorIntSet.java @@ -345,8 +345,7 @@ public boolean sameValue(IntSet that) throws IllegalArgumentException, Unimpleme } else if (that instanceof SemiSparseMutableIntSet) { return that.sameValue(this); } else { - Assertions.UNREACHABLE("unexpected class " + that.getClass()); - return false; + return Assertions.UNREACHABLE("unexpected class " + that.getClass()); } } @@ -434,8 +433,7 @@ private boolean sameValue(MutableSharedBitVectorIntSet that) { } else { /* sharedPart != null , privatePart != null */ if (that.sharedPart == null) { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } else { /* that.sharedPart != null */ if (that.privatePart == null) { diff --git a/util/src/main/java/com/ibm/wala/util/intset/MutableSparseLongSet.java b/util/src/main/java/com/ibm/wala/util/intset/MutableSparseLongSet.java index 34652565d4..276c8667be 100644 --- a/util/src/main/java/com/ibm/wala/util/intset/MutableSparseLongSet.java +++ b/util/src/main/java/com/ibm/wala/util/intset/MutableSparseLongSet.java @@ -253,8 +253,7 @@ public boolean addAll(LongSet set) throws UnimplementedError { if (set instanceof SparseLongSet sparseLongSet) { return addAll(sparseLongSet); } else { - Assertions.UNREACHABLE(); - return false; + return Assertions.UNREACHABLE(); } } diff --git a/util/src/main/java/com/ibm/wala/util/intset/SparseIntSet.java b/util/src/main/java/com/ibm/wala/util/intset/SparseIntSet.java index 0a7ed304b8..750f6b944c 100644 --- a/util/src/main/java/com/ibm/wala/util/intset/SparseIntSet.java +++ b/util/src/main/java/com/ibm/wala/util/intset/SparseIntSet.java @@ -168,8 +168,7 @@ public boolean sameValue(IntSet that) throws IllegalArgumentException, Unimpleme } else if (that instanceof MutableSharedBitVectorIntSet mutableSharedBitVectorIntSet) { return sameValue(mutableSharedBitVectorIntSet.makeSparseCopy()); } else { - Assertions.UNREACHABLE(that.getClass().toString()); - return false; + return Assertions.UNREACHABLE(that.getClass().toString()); } } diff --git a/util/src/main/java/com/ibm/wala/util/intset/SparseLongSet.java b/util/src/main/java/com/ibm/wala/util/intset/SparseLongSet.java index 57c25793cd..92df3c2134 100644 --- a/util/src/main/java/com/ibm/wala/util/intset/SparseLongSet.java +++ b/util/src/main/java/com/ibm/wala/util/intset/SparseLongSet.java @@ -161,8 +161,7 @@ public boolean sameValue(LongSet that) throws IllegalArgumentException, Unimplem if (that instanceof SparseLongSet sparseLongSet) { return sameValueInternal(sparseLongSet); } else { - Assertions.UNREACHABLE(that.getClass().toString()); - return false; + return Assertions.UNREACHABLE(that.getClass().toString()); } } @@ -344,8 +343,7 @@ public static SparseLongSet pair(long i, long j) { temp.intersectWith(sparseLongSet); return temp; } else { - Assertions.UNREACHABLE("Unexpected: " + that.getClass()); - return null; + return Assertions.UNREACHABLE("Unexpected: " + that.getClass()); } } @@ -445,8 +443,7 @@ public boolean isSubset(LongSet that) throws IllegalArgumentException, Unimpleme if (that instanceof SparseLongSet sparseLongSet) { return isSubsetInternal(sparseLongSet); } else { - Assertions.UNREACHABLE("Unexpected type " + that.getClass()); - return false; + return Assertions.UNREACHABLE("Unexpected type " + that.getClass()); } } diff --git a/util/src/main/java/com/ibm/wala/util/math/Logs.java b/util/src/main/java/com/ibm/wala/util/math/Logs.java index b3f0df08e3..02fb8dee7b 100644 --- a/util/src/main/java/com/ibm/wala/util/math/Logs.java +++ b/util/src/main/java/com/ibm/wala/util/math/Logs.java @@ -71,8 +71,7 @@ public static int log2(int x) throws IllegalArgumentException { } test <<= 1; } - Assertions.UNREACHABLE(); - return -1; + return Assertions.UNREACHABLE(); } /** Binary log: finds the smallest power k such that 2^k >= n */