JavaCompilerCore/examples/luar/WCTest5.jav
2013-10-18 13:33:46 +02:00

71 lines
2.9 KiB
Java
Executable File

/* Vector<b> Vector<? extends Vector<a>> */
/* Erg:
[[(TPH a = Vector< Integer >), (TPH b = ? extends Matrix)],
[(TPH a = ? extends Vector< Integer >), (TPH b = ? extends Matrix)],
[(TPH a = ? extends Vector< ? extends Integer >), (TPH b = ? extends Matrix)],
[(TPH a = ? extends Vector< ? extends Number >), (TPH b = ? extends Matrix)],
[(TPH a = ? extends Vector< ? extends Object >), (TPH b = ? extends Matrix)],
[(TPH a = ? extends Vector< ? super Integer >), (TPH b = ? extends Matrix)],
[(TPH a = ? extends Object), (TPH b = ? extends Matrix)],
[(TPH a = ? super Vector< Integer >), (TPH b = ? extends Matrix)],
[(TPH a = Vector< Integer >), (TPH b = Matrix)],
[(TPH a = ? extends Vector< Integer >), (TPH b = Matrix)],
[(TPH a = ? extends Vector< ? extends Integer >), (TPH b = Matrix)],
[(TPH a = ? extends Vector< ? extends Number >), (TPH b = Matrix)],
[(TPH a = ? extends Vector< ? extends Object >), (TPH b = Matrix)],
[(TPH a = ? extends Vector< ? super Integer >), (TPH b = Matrix)],
[(TPH a = ? extends Object), (TPH b = Matrix)],
[(TPH a = ? super Vector< Integer >), (TPH b = Matrix)],
[(TPH b = ? extends Vector< TPH a >)],
[(TPH b = Vector< TPH a >)]]
*/
/* FUNKTIONIERT !!! */
/* Fehler bei b <? ? ext Vec<a>:
Reflexivitaet fehlt: b = Vec<a> bzw. b = ? ext Vec<a> wird nicht berechnet
isRXSimilarRY ist wahrscheinlich die falsche Methode, hier wird geprueft,
ob RY instance von RFC ist. Das ist bei RY = Vec<a> und RFC = Vec<Vec<Int>>
nicht der Fall. Moeglicherweise statt isRXSimilarRY match benutzen ???
PL 07-07-04: isRXSimilarRY scheint jetzt zu funktionieren.
Reflexivitaet fehlt noch
*/
/* Fehler behoben. Korrekt? */
/* Vector<? super Vector<a>> Vector<b> */
/* FUNKTIONIERT !!! nochmals ueberpruefen 07-07-29 */
/* Vector<b> Vector<? super Vector<a>> */
/* Test der 3. Menge. FUNKTIONIERT !!! nochmals ueberpruefen 07-07-29 */
/* Vector<a> Vector<Integer> */
/* Test der 4. Menge. FUNKTIONIERT !!! nochmals ueberpruefen 07-07-29 */
Vector<a> Vector<? extends Vector<? extends Vector<b>>>
/* funktioniert. Ergebnis:
[[(TPH b = Integer), (TPH a = ? extends Matrix)],
[(TPH b = Integer), (TPH a = Matrix)],
[(TPH b = ? extends Integer), (TPH a = ? extends Matrix)],
[(TPH b = ? extends Integer), (TPH a = Matrix)],
[(TPH b = ? extends Number), (TPH a = ? extends Matrix)],
[(TPH b = ? extends Number), (TPH a = Matrix)],
[(TPH b = ? extends Object), (TPH a = ? extends Matrix)],
[(TPH b = ? extends Object), (TPH a = Matrix)],
[(TPH b = ? super Integer), (TPH a = ? extends Matrix)],
[(TPH b = ? super Integer), (TPH a = Matrix)],
[(TPH a = ? extends Vector< ? extends Vector< TPH b > >)],
[(TPH a = Vector< ? extends Vector< TPH b > >)],
[(TPH a = ? extends Vector< Vector< TPH b > >)],
[(TPH a = Vector< Vector< TPH b > >)]] */
class Number {}
class Integer extends Number {}
class Vector<a> { }
class Matrix extends Vector<Vector<Integer>> { }