dart2js: check for the full getter/setter prefixes (fix #23828)
R=floitsch@google.com
Review URL: https://codereview.chromium.org//1232423004 .
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/nsm_emitter.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/nsm_emitter.dart
index 7aa34bd..cf823c1 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/nsm_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/nsm_emitter.dart
@@ -237,8 +237,8 @@
for (var j = 0; j < shortNames.length; j++) {
var type = 0;
var shortName = shortNames[j];
- if (shortName[0] == "${namer.getterPrefix[0]}") type = 1;
- if (shortName[0] == "${namer.setterPrefix[0]}") type = 2;
+ if (shortName.indexOf("${namer.getterPrefix}") == 0) type = 1;
+ if (shortName.indexOf("${namer.setterPrefix}") == 0) type = 2;
// Generate call to:
//
// createInvocationMirror(String name, internalName, type,
diff --git a/tests/compiler/dart2js_extra/23828_test.dart b/tests/compiler/dart2js_extra/23828_test.dart
new file mode 100644
index 0000000..b6312a3
--- /dev/null
+++ b/tests/compiler/dart2js_extra/23828_test.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// Regression test for http://dartbug.com/23828/
+// Used to fail when methods contain a name starting with `get`
+import 'package:expect/expect.dart';
+
+confuse(x) { return x; return x; }
+
+class MA {
+ noSuchMethod(i) => Expect.equals(i.positionalArguments.length, 1);
+}
+
+main() {
+ confuse(new MA()).getFoo('a');
+}