| package x; |
| import java.util.*; |
| import org.intellij.lang.annotations.Flow; |
| |
| class ListTack { |
| void f(String <caret>s) { |
| } |
| void g(List<String> l) { |
| l.add(1, "uuu"); |
| |
| f(l.get(0)); |
| } |
| void h() { |
| ArrayList<String> strings = new ArrayList<String>(); |
| strings.add("x"); |
| X<String> s2 = new X<String>(strings); |
| s2.add("y"); |
| List<String> s3 = new ArrayList<String>(); |
| s3.addAll(s2.toCollection()); |
| |
| Collection<String> s4 = new ArrayList<String>(s3.subList(0,1)); |
| g(new ArrayList<String>(s4)); |
| } |
| |
| class X<T> { |
| X (@Flow(sourceIsContainer = true, targetIsContainer = true) Collection<T> input) {} |
| |
| @Flow(sourceIsContainer = true) |
| T get() { return null;} |
| |
| void add(@Flow(targetIsContainer = true) T item) {} |
| |
| @Flow(sourceIsContainer=true, targetIsContainer = true) |
| Collection<T> toCollection() { return null; } |
| } |
| } |
| |