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