Skip to content

dart2js: create interceptors for static subclasses of Function #9586

Closed
@rakudrama

Description

@rakudrama

Static functions get methods from the JSFunction interceptor.
Some methods ($asFoo) are different depending on the type of the static function.

For each subtype of Function implemented by a static function, introduce a new interceptor subclass of JSFunction.
Instead of decorating each static function with type information, decorate it with the created interceptor for the subtype it implements.

getInterceptor should be changed to use the decorating interceptor if present, otherwise use the JSFunction interceptor.

$.typeNameInFirefox.call$1 = $.typeNameInFirefox;
$.typeNameInFirefox.$name = "typeNameInFirefox";
$.typeNameInFirefox.$isAnimationCallback = true;
$.typeNameInFirefox.$isChangeListener = true;
$.typeNameInFirefox.$isSelectHandler = true;
$.typeNameInFirefox.$is_FutureOnError = true;
$.typeNameInFirefox.$is_ErrorHandler = true;
$.typeNameInFirefox.$isEventListener = true;
$.typeNameInIE.call$1 = $.typeNameInIE;
$.typeNameInIE.$name = "typeNameInIE";
$.typeNameInIE.$isAnimationCallback = true;
$.typeNameInIE.$isChangeListener = true;
$.typeNameInIE.$isSelectHandler = true;
$.typeNameInIE.$is_FutureOnError = true;
$.typeNameInIE.$is_ErrorHandler = true;
$.typeNameInIE.$isEventListener = true;

-->
$$.JSFunction123 = {"": "JSfunction",
  $isAnimationCallback: true,
  $isChangeListener: true,
  $isSelectHandler: true,
  $is_FutureOnError: true,
  $is_ErrorHandler: true,
  $isEventListener: true
};

$.typeNameInFirefox.call$1 = $.typeNameInFirefox;
$.typeNameInFirefox.$name = "typeNameInFirefox";
$.typeNameInFirefox.$interceptor = $.JSFunction123.prototype;
$.typeNameInIE.call$1 = $.typeNameInIE;
$.typeNameInIE.$name = "typeNameInIE";
$.typeNameInIE.$interceptor = $.JSFunction123.prototype;

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions