Skip to content

avm1 super doesn't correctly resolve this properties #496

Closed
@Dinnerbone

Description

@Dinnerbone

Well that's a difficult bug to summarize.

In a method on a superclass, this should look at the current object top-down when resolving properties, and not just from the current point in the prototype chain.

Test case:

class Base {
	function Base() {
		trace("// Base");
		trace(this["test"]);
	}
}
class Extended extends Base {
	var test = "Extended";
	function Extended() {
		super();
		trace("// Extended");
		trace(this["test"]);
	}
}
class ExtendedFurther extends Extended {
	var test = "ExtendedFurther";
	function ExtendedFurther() {
		super();
		trace("// ExtendedFurther");
		trace(this["test"]);
	}
}
new ExtendedFurther();

Expected output:

// Base
ExtendedFurther
// Extended
ExtendedFurther
// ExtendedFurther
ExtendedFurther

In ruffle:

// Base
undefined
// Extended
Extended
// ExtendedFurther
ExtendedFurther

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-avm1Area: AVM1 (ActionScript 1 & 2)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions