Please try again with the latest compiler commits. It should be fixed now.

--
Josh Tynjala
Bowler Hat LLC
https://bowlerhat.dev/


On Mon, Jan 26, 2026 at 11:34 AM Harbs <[email protected]> wrote:

> Cool. Thanks!
>
> > On Jan 26, 2026, at 8:07 PM, Josh Tynjala <[email protected]>
> wrote:
> >
> > I'll check it out. Looking at where the exception is thrown, I have a
> > pretty good idea of what is null and how to go about fixing it.
> >
> > --
> > Josh Tynjala
> > Bowler Hat LLC
> > https://bowlerhat.dev/
> >
> >
> > On Mon, Jan 26, 2026 at 9:43 AM Harbs <[email protected]> wrote:
> >
> >> I wanted to try out the new typed functions and I’m getting lots of
> >> errors. Here’s what I tried:
> >>
> >> 1. I converted a bunch of function. declarations in Core:
> >> diff --git
> >>
> a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/object/defineGetter.as
> >>
> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/object/defineGetter.as
> >> index 6fb9ce411a..50adfadbbe 100644
> >> ---
> >>
> a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/object/defineGetter.as
> >> +++
> >>
> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/object/defineGetter.as
> >> @@ -28,7 +28,7 @@ package org.apache.royale.utils.object
> >>         *  @royalesuppressexport
> >>         */
> >>     COMPILE::JS
> >> -    public function
> >> defineGetter(obj:Object,prop:String,getterFunction:Function):void
> >> +    public function
> defineGetter(obj:Object,prop:String,getterFunction:()
> >> => *):void
> >>     {
> >>             Object.defineProperty(obj, prop, {"get": getterFunction});
> >>         }
> >>
> >>
> >> diff --git
> >>
> a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/IAsyncTask.as
> >>
> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/IAsyncTask.as
> >> index 9f3565ff14..c6b7402a6d 100644
> >> ---
> >>
> a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/IAsyncTask.as
> >> +++
> >>
> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/IAsyncTask.as
> >> @@ -20,8 +20,8 @@ package org.apache.royale.utils.async
> >> {
> >>        public interface IAsyncTask
> >>        {
> >> -               function done(callback:Function):IAsyncTask;
> >> -               function exec(callback:Function):IAsyncTask;
> >> +               function done(callback:(task:IAsyncTask) =>
> >> void):IAsyncTask;
> >> +               function exec(callback:(task:IAsyncTask) =>
> >> void):IAsyncTask;
> >>                function run(data:Object=null):void;
> >>
> >>                function complete():void;
> >>
> >>
> >> diff --git
> >>
> a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/AsyncTask.as
> >>
> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/AsyncTask.as
> >> index 541b3827be..47a71323de 100644
> >> ---
> >>
> a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/AsyncTask.as
> >> +++
> >>
> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/AsyncTask.as
> >> @@ -136,7 +136,7 @@ package org.apache.royale.utils.async
> >>      *  @playerversion AIR 2.6
> >>      *  @productversion Royale 0.9.6
> >>      */
> >> -    public function done(callback:Function):IAsyncTask{
> >> +    public function done(callback:(task:IAsyncTask) =>
> void):IAsyncTask{
> >>       if(_status == "complete" || _status == "failed"){
> >>         callback(this);
> >>         return this;
> >> @@ -158,7 +158,7 @@ package org.apache.royale.utils.async
> >>      *  @playerversion AIR 2.6
> >>      *  @productversion Royale 0.9.13
> >>      */
> >> -    public function exec(callback:Function):IAsyncTask
> >> +    public function exec(callback:(task:IAsyncTask) => void):IAsyncTask
> >>     {
> >>       done(callback);
> >>       run();
> >> @@ -200,7 +200,7 @@ package org.apache.royale.utils.async
> >>      * Keep references to event listeners for automatic cleanup
> >>      */
> >>     COMPILE::JS
> >> -    override public function addEventListener(type:String,
> >> handler:Function, useCapture:Boolean = false, scope:Object = null):void
> >> +    override public function addEventListener(type:String,
> >> handler:(ev:Event) => void, useCapture:Boolean = false, scope:Object =
> >> null):void
> >>     {
> >>       super.addEventListener(type,handler,useCapture,scope);
> >>       if(!listeners)
> >> @@ -214,7 +214,7 @@ package org.apache.royale.utils.async
> >>       });
> >>     }
> >>     COMPILE::SWF
> >> -    override public function addEventListener(type:String,
> >> listener:Function, useCapture:Boolean = false, priority:int = 0,
> >> useWeakReference:Boolean = false):void
> >> +    override public function addEventListener(type:String,
> >> listener:(ev:Event) => void, useCapture:Boolean = false, priority:int =
> 0,
> >> useWeakReference:Boolean = false):void
> >>     {
> >>       if(!listeners)
> >>       {
> >> 2. I compiled Core
> >> 3. I opened my project
> >> 4. I got a bunch of:
> >> Unexpected exception 'java.lang.NullPointerException' with message
> >> '${exceptionMessage}' at org.apache.royale.compiler.internal.tree.as
> >> .FunctionTypeExpressionNode.parseSignature:195
> >>        org.apache.royale.compiler.internal.tree.as
> >> .FunctionTypeExpressionNode.createTypeNodeFromParameterDefinition:246
> >>        org.apache.royale.compiler.internal.tree.as
> >> .FunctionTypeExpressionNode.createFromFunctionDefinition:157
> >>
> >>
> org.apache.royale.compiler.internal.semantics.MethodBodySemanticChecker.checkFormalsVsActuals:1180
> >>
> >>
> org.apache.royale.compiler.internal.semantics.MethodBodySemanticChecker.checkFunctionCall:1474
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.ABCGeneratingReducer.reduce_functionAsMemberExpr:3890
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.action_349:5971
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.dispatchAction:9331
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduceAntecedent:40375
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.dispatchAction:7568
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduceAntecedent:40375
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.dispatchAction:10191
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduceAntecedent:40375
> >>
> >> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduce:40352
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduceSubgoals:40403
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduceAntecedent:40374
> >>
> >> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduce:40352
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduceSubgoals:40394
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduceAntecedent:40374
> >>
> >> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduce:40352
> >>
> >> org.apache.royale.compiler.internal.as.codegen.CmcEmitter.burm:40654
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.ABCGenerator.generateInstructions:235
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.ABCGenerator.generateMethodBodyForFunction:416
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.ABCGenerator.generateMethodBodyForFunction:370
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.ABCGenerator.generateFunction:272
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.ClassDirectiveProcessor.declareFunction:891
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.DirectiveProcessor.processNode:218
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.DirectiveProcessor.traverse:192
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.GlobalDirectiveProcessor.declareClass:462
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.DirectiveProcessor.processNode:210
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.DirectiveProcessor.traverse:192
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.GlobalDirectiveProcessor.declarePackage:488
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.DirectiveProcessor.processNode:227
> >>
> >>
> org.apache.royale.compiler.internal.as.codegen.DirectiveProcessor.traverse:192
> >>
> >> org.apache.royale.compiler.internal.as.codegen.ABCGenerator.generate:126
> >>
> >>
> org.apache.royale.compiler.internal.units.ASCompilationUnit.handleABCBytesRequest:412
> >>
> >>
> org.apache.royale.compiler.internal.units.CompilationUnitBase.processABCBytesRequest:876
> >>
> >>
> org.apache.royale.compiler.internal.units.CompilationUnitBase$4$1.call:313
> >>
> >>
> org.apache.royale.compiler.internal.units.CompilationUnitBase$4$1.call:309
> >>
> >>
> org.apache.royale.compiler.internal.units.requests.RequestMaker$1.call:228
> >>
> >>
> org.apache.royale.compiler.internal.units.requests.RequestMaker$1.call:222
> >>        java.util.concurrent.FutureTask.run:264
> >>        java.util.concurrent.ThreadPoolExecutor.runWorker:1128
> >>        java.util.concurrent.ThreadPoolExecutor$Worker.run:628
> >>        java.lang.Thread.run:829
>
>

Reply via email to