File: Main1.hx

package info (click to toggle)
haxe 1%3A4.2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 42,984 kB
  • sloc: ml: 132,401; ansic: 2,403; makefile: 436; java: 365; cs: 336; cpp: 318; python: 315; sh: 75; objc: 64; php: 45; xml: 30; javascript: 11
file content (20 lines) | stat: -rw-r--r-- 571 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
enum ToString<T> {
	ToString<S>(s:S, f:S->String);
}

class Main1 {
    static function main () {
        var d1 = ToString(5, function (i:Int) return "" + i);
        var d2 = ToString("bar", function (i:String) return i);
        toString(d1);
        toString(d2);
	}

	public static function toString<T>(x:ToString<T>) {
		switch (x) {
			case ToString(a,f):
				// at this point, we don't know the type of a and the parameter type of f, but we know that they are the same type and cannot be used with other types.
				trace(f([1,2])); // shouldn't work here
		}
	}
}