aboutsummaryrefslogtreecommitdiffstats
path: root/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/typeinference/bounds/ThrowsBound.java
diff options
context:
space:
mode:
Diffstat (limited to 'javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/typeinference/bounds/ThrowsBound.java')
-rw-r--r--javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/typeinference/bounds/ThrowsBound.java62
1 files changed, 62 insertions, 0 deletions
diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/typeinference/bounds/ThrowsBound.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/typeinference/bounds/ThrowsBound.java
new file mode 100644
index 000000000..acea3bae8
--- /dev/null
+++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/typeinference/bounds/ThrowsBound.java
@@ -0,0 +1,62 @@
+package com.github.javaparser.symbolsolver.resolution.typeinference.bounds;
+
+import com.github.javaparser.symbolsolver.resolution.typeinference.Bound;
+import com.github.javaparser.symbolsolver.resolution.typeinference.InferenceVariable;
+import com.github.javaparser.symbolsolver.resolution.typeinference.InferenceVariableSubstitution;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * The inference variable α appears in a throws clause.
+ *
+ * A bound of the form throws α is purely informational: it directs resolution to optimize the instantiation of α so
+ * that, if possible, it is not a checked exception type.
+ *
+ * @author Federico Tomassetti
+ */
+public class ThrowsBound extends Bound {
+ private InferenceVariable inferenceVariable;
+
+ public ThrowsBound(InferenceVariable inferenceVariable) {
+ this.inferenceVariable = inferenceVariable;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ ThrowsBound that = (ThrowsBound) o;
+
+ return inferenceVariable.equals(that.inferenceVariable);
+ }
+
+ @Override
+ public String toString() {
+ return "ThrowsBound{" +
+ "inferenceVariable=" + inferenceVariable +
+ '}';
+ }
+
+ @Override
+ public int hashCode() {
+ return inferenceVariable.hashCode();
+ }
+
+ @Override
+ public Set<InferenceVariable> usedInferenceVariables() {
+ Set<InferenceVariable> variables = new HashSet<>();
+ variables.add(inferenceVariable);
+ return variables;
+ }
+
+ @Override
+ public boolean isSatisfied(InferenceVariableSubstitution inferenceVariableSubstitution) {
+ throw new UnsupportedOperationException();
+ }
+
+ public boolean isThrowsBoundOn(InferenceVariable inferenceVariable) {
+ return inferenceVariable.equals(this.inferenceVariable);
+ }
+}