Skip to content

DDC: mixing in a concrete getter/setter clobbers inherited corresponding setter/getter #29935

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
greglittlefield-wf opened this issue Jun 19, 2017 · 2 comments
Labels
area-web-js Issues related to JavaScript support for Dart Web, including DDC, dart2js, and JS interop. type-bug Incorrect behavior (everything from a crash to more subtle misbehavior) web-dev-compiler

Comments

@greglittlefield-wf
Copy link
Contributor

greglittlefield-wf commented Jun 19, 2017

Classes that declare a concrete getter or setter without a corresponding setter or getter, when mixed in, clobber the corresponding setter or getter inherited by a given class.

class Setter {
  set foo(value) {
    print('Setting foo to `$value`');
  }
}

class Getter {
  get foo => 'foo';
}

class GetterFail1 extends Getter with Setter {}
class GetterFail2 extends Object with Getter, Setter {}

class SetterFail1 extends Setter with Getter {}
class SetterFail2 extends Object with Setter, Getter {}

class Pass1 extends Getter {
  set foo(value) {
    print('Setting foo to `$value`');
  }
}

class Pass2 extends Setter {
  get foo => 'foo';
}

main() {
  print(new Pass1().foo); // 'foo'
  print(new Pass2().foo); // 'foo'
  new Pass1().foo = 'bar'; // Setting foo to `bar`
  new Pass2().foo = 'bar'; // Setting foo to `bar`

  print(new GetterFail1().foo); // undefined
  print(new GetterFail2().foo); // undefined

  // TypeError: Cannot set property foo of [object Object] which has only a getter
  new SetterFail1().foo = 'bar';

  // TypeError: Cannot set property foo of [object Object] which has only a getter
  new SetterFail2().foo = 'bar';
}

Related: #29914

@robbecker-wf
Copy link

robbecker-wf commented Jul 24, 2017

FYI @kevmoo # 1 DDC issue for Workiva

@vsmenon vsmenon added the area-web-js Issues related to JavaScript support for Dart Web, including DDC, dart2js, and JS interop. label Jul 20, 2019
@greglittlefield-wf
Copy link
Contributor Author

This no longer reproduces in the latest stable Dart version; closing as fixed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-web-js Issues related to JavaScript support for Dart Web, including DDC, dart2js, and JS interop. type-bug Incorrect behavior (everything from a crash to more subtle misbehavior) web-dev-compiler
Projects
None yet
Development

No branches or pull requests

4 participants