File: Main.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 (51 lines) | stat: -rw-r--r-- 1,026 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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package test;

import haxe.macro.Context;
import haxe.macro.Expr;

private class Bar {
	public function new() { }
	public function getValue() {
		return "foo";
	}
}

class Main
{
    static function main()
    {
        defineFooExtendsBarInLocalModule();
		#if !macro
		var foo = new Foo();
		Sys.stderr().writeString(foo.getValue());
		#end
    }

    macro static function defineFooExtendsBarInLocalModule(?e)
    {
        var infos = Context.getPosInfos(Context.currentPos());
        var position = Context.makePosition({min:0, max:0, file:infos.file});

        var superTypePath:TypePath =
        {
            pack: [],
            name: "Bar",
            sub: null
        }

        var kind:TypeDefKind = TypeDefKind.TDClass(superTypePath);

        var Foo:TypeDefinition =
        {
            name: "Foo",
            pack: ["test"],
            pos: position,
            kind: kind,
            fields: []
        }

        Context.defineModule(Context.getLocalModule(), [Foo]);

        return e;
    }
}