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');
+}