File: Macro.hx

package info (click to toggle)
haxe 1%3A4.3.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 44,520 kB
  • sloc: ml: 137,268; ansic: 2,491; makefile: 456; java: 386; cs: 336; cpp: 318; python: 318; sh: 75; objc: 64; php: 50; xml: 31; javascript: 11
file content (39 lines) | stat: -rwxr-xr-x 1,139 bytes parent folder | download | duplicates (2)
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

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

class Macro {
    public static macro function buildMain(): Array<Field> {
        final pos = Context.currentPos();
        final bf = Context.getBuildFields();
    
        final type = Context.getType('Test2');
    
        switch (type) {
            case TInst(ctRef, _):
                final ct = ctRef.get();
                
                try {
                    final ctor = ct.constructor.get().expr();
                } catch (e: Dynamic) {

                }
                
                Context.warning('This does not show if printStuff() calls error() or reportError()', pos);
            case _:
        }
    
        return bf;
    }

    public static macro function buildTest2(): Array<Field> {
        final pos = Context.currentPos();
        final bf = Context.getBuildFields();
        
        // Use error() or reportError() here -> Main Completion does not work, Eval crashes
        // Use warning() or info() -> Everything works as expected
        Context.reportError('Crashes HERE in eval.vm.callMacroApi', pos);

        return bf;
    }
}