aboutsummaryrefslogtreecommitdiff
path: root/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/typeinference/bounds/CapturesBound.java
diff options
context:
space:
mode:
Diffstat (limited to 'javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/typeinference/bounds/CapturesBound.java')
-rw-r--r--javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/typeinference/bounds/CapturesBound.java69
1 files changed, 69 insertions, 0 deletions
diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/typeinference/bounds/CapturesBound.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/typeinference/bounds/CapturesBound.java
new file mode 100644
index 000000000..563bb29e7
--- /dev/null
+++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/resolution/typeinference/bounds/CapturesBound.java
@@ -0,0 +1,69 @@
+package com.github.javaparser.symbolsolver.resolution.typeinference.bounds;
+
+import com.github.javaparser.resolution.types.ResolvedType;
+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.List;
+import java.util.Set;
+
+/**
+ * Capture(G<A1, ..., An>): The variables α1, ..., αn represent the result of capture conversion (§5.1.10)
+ * applied to G<A1, ..., An> (where A1, ..., An may be types or wildcards and may mention inference variables).
+ *
+ * @author Federico Tomassetti
+ */
+public class CapturesBound extends Bound {
+ private List<InferenceVariable> inferenceVariables;
+ private List<ResolvedType> typesOrWildcards;
+
+ public CapturesBound(List<InferenceVariable> inferenceVariables, List<ResolvedType> typesOrWildcards) {
+ this.inferenceVariables = inferenceVariables;
+ this.typesOrWildcards = typesOrWildcards;
+ }
+
+ @Override
+ public boolean isSatisfied(InferenceVariableSubstitution inferenceVariableSubstitution) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Set<InferenceVariable> usedInferenceVariables() {
+ throw new UnsupportedOperationException();
+ }
+
+ public List<InferenceVariable> getInferenceVariables() {
+ return inferenceVariables;
+ }
+
+ public List<ResolvedType> getTypesOrWildcards() {
+ return typesOrWildcards;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ CapturesBound that = (CapturesBound) o;
+
+ if (!inferenceVariables.equals(that.inferenceVariables)) return false;
+ return typesOrWildcards.equals(that.typesOrWildcards);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = inferenceVariables.hashCode();
+ result = 31 * result + typesOrWildcards.hashCode();
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "CapturesBound{" +
+ "inferenceVariables=" + inferenceVariables +
+ ", typesOrWildcards=" + typesOrWildcards +
+ '}';
+ }
+}