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