I’d be more than happy to do that ☺

Ideally at a bar at the beach with a nice selection of hops-smoothys ;-)

But for now, assuming you are using IntelliJ and Maven:
All I do, is select “clean” and “install” in the maven tab, right-click and 
select “debug”. Additionally in the debugger tab, I click on “edit-breakpoints” 
and add a new “Java Exception Breakpoint” and define the class 
“java.lang.NullPointerException”. Then the execution will halt exactly where a 
NullPointerException is thrown.

But beware … there might be quite a number of NPEs to step though.

Chris


Am 06.03.17, 15:56 schrieb "Harbs" <harbs.li...@gmail.com>:

    > When building with Maven it’s simple (I just click the “debug” button of 
my maven build). No Idea how to do that with Ant though.
    
    No idea what this even means. ;-)
    
    I’d really like to sit down with you while we’re in Miami and see how you 
are setup to work on the compiler. I really wish I was more capable of 
debugging this stuff… :-(
    
    > On Mar 6, 2017, at 4:19 PM, Christofer Dutz <christofer.d...@c-ware.de> 
wrote:
    > 
    > Hi Harbs,
    > 
    > Having a look at that part of the code:
    > 
    >            ASScope pkgScope = scope;
    >            while (!(pkgScope instanceof PackageScope))
    >                pkgScope = pkgScope.getContainingScope();      <!—This is 
where it goes BOOM
    >            String[] imports = pkgScope.getImports();
    > 
    > It seems the scope is null (unfortunately if pkgScope is null it is not 
of type PackageScope and satisfies the loop condition. Inside the loop 
everything goes BOOM then.
    > 
    > Unfortunately, these NPEs make it very difficult to see what’s the real 
problem. In these cases, I usually set a NullPointerException breakpoint and 
have a look at what’s happening in the moment it explodes. 
    > When building with Maven it’s simple (I just click the “debug” button of 
my maven build). No Idea how to do that with Ant though.
    > 
    > Chris
    > 
    > 
    > 
    > 
    > Am 06.03.17, 15:01 schrieb "Harbs" <harbs.li...@gmail.com>:
    > 
    >    Anyone have an idea what this error might be?
    > 
    >       [compc] 
/Users/harbs/Documents/git/PrintUI/printui-flexjs/text_engine/frameworks/tlf/src/org/apache/flex/textLayout/container/TextContainerManager.as
 Error: Internal error in ABC generator subsystem, when generating code for: 
/Users/harbs/Documents/git/PrintUI/printui-flexjs/text_engine/frameworks/tlf/src/org/apache/flex/textLayout/container/TextContainerManager.as:
 java.lang.NullPointerException
    >        [compc]    at 
org.apache.flex.compiler.internal.projects.FlexProject.doubleCheckAmbiguousDefinition(FlexProject.java:2152)
    >        [compc]    at 
org.apache.flex.compiler.internal.scopes.ASScopeCache.findProperty(ASScopeCache.java:173)
    >        [compc]    at 
org.apache.flex.compiler.internal.scopes.ASScope.findProperty(ASScope.java:1428)
    >        [compc]    at 
org.apache.flex.compiler.internal.definitions.references.LexicalReference.resolve(LexicalReference.java:71)
    >        [compc]    at 
org.apache.flex.compiler.internal.definitions.DefinitionBase.resolveType(DefinitionBase.java:1054)
    >        [compc]    at 
org.apache.flex.compiler.internal.definitions.DefinitionBase.resolveType(DefinitionBase.java:1094)
    >        [compc]    at 
org.apache.flex.compiler.internal.definitions.DefinitionBase.resolveType(DefinitionBase.java:876)
    >        [compc]    at 
org.apache.flex.compiler.internal.as.codegen.ClassDirectiveProcessor.declareVariable(ClassDirectiveProcessor.java:1166)
    >        [compc]    at 
org.apache.flex.compiler.internal.as.codegen.DirectiveProcessor.processNode(DirectiveProcessor.java:226)
    >        [compc]    at 
org.apache.flex.compiler.internal.as.codegen.DirectiveProcessor.traverse(DirectiveProcessor.java:188)
    >        [compc]    at 
org.apache.flex.compiler.internal.as.codegen.GlobalDirectiveProcessor.declareClass(GlobalDirectiveProcessor.java:429)
    >        [compc]    at 
org.apache.flex.compiler.internal.as.codegen.DirectiveProcessor.processNode(DirectiveProcessor.java:206)
    >        [compc]    at 
org.apache.flex.compiler.internal.as.codegen.DirectiveProcessor.traverse(DirectiveProcessor.java:188)
    >        [compc]    at 
org.apache.flex.compiler.internal.as.codegen.ABCGenerator.generate(ABCGenerator.java:122)
    >        [compc]    at 
org.apache.flex.compiler.internal.units.ASCompilationUnit.handleABCBytesRequest(ASCompilationUnit.java:389)
    >        [compc]    at 
org.apache.flex.compiler.internal.units.CompilationUnitBase.processABCBytesRequest(CompilationUnitBase.java:873)
    >        [compc]    at 
org.apache.flex.compiler.internal.units.CompilationUnitBase.access$300(CompilationUnitBase.java:108)
    >        [compc]    at 
org.apache.flex.compiler.internal.units.CompilationUnitBase$4$1.call(CompilationUnitBase.java:310)
    >        [compc]    at 
org.apache.flex.compiler.internal.units.CompilationUnitBase$4$1.call(CompilationUnitBase.java:306)
    >        [compc]    at 
org.apache.flex.compiler.internal.units.requests.RequestMaker$1.call(RequestMaker.java:228)
    >        [compc]    at 
org.apache.flex.compiler.internal.units.requests.RequestMaker$1.call(RequestMaker.java:222)
    >        [compc]    at 
java.util.concurrent.FutureTask.run(FutureTask.java:266)
    >        [compc]    at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    >        [compc]    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    >        [compc]    at java.lang.Thread.run(Thread.java:745)
    > 
    >    If I would have to guess, it would be coming from this code:
    >            public override function dispatchEvent(event:Event):Boolean
    >            {
    >                if (event.type == DamageEvent.DAMAGE)
    >                {
    >                    _textDamaged = true;
    >                    if (_composeState == COMPOSE_FACTORY)
    >                        _damaged = true;
    >                }
    >                else if (event.type == 
FlowOperationEvent.FLOW_OPERATION_BEGIN)
    >                {
    >                    //TODO fix mouseChildren
    >    //              if (_container.mouseChildren == false)
    >    //                  _container.mouseChildren = true;
    >                }
    >                var result:Boolean = super.dispatchEvent(event);
    >                if (!result)
    >                    event.preventDefault();
    >                return result;
    >            }
    > 
    > 
    > 
    > 
    
    

Reply via email to