From eb29627e9ee2c595fcc913adebea3c8bbbdbcdad Mon Sep 17 00:00:00 2001 From: Stephen Adams Date: Fri, 21 Feb 2020 19:31:16 +0000 Subject: [PATCH] [dart2js] Handle injected names from late fields Change-Id: I5ca6535a282ce8fdf4fba6cd1fa5752bce2921c9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/136714 Reviewed-by: Sigmund Cherem Commit-Queue: Stephen Adams --- pkg/compiler/lib/src/js_backend/namer.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/compiler/lib/src/js_backend/namer.dart b/pkg/compiler/lib/src/js_backend/namer.dart index 326841666fb..ab8f0cc4b12 100644 --- a/pkg/compiler/lib/src/js_backend/namer.dart +++ b/pkg/compiler/lib/src/js_backend/namer.dart @@ -636,6 +636,8 @@ class Namer extends ModularNamer { String privateName(Name originalName) { String text = originalName.text; + text = text.replaceAll(_nonIdentifierRE, '_'); + // Public names are easy. if (!originalName.isPrivate) return text; @@ -883,7 +885,8 @@ class Namer extends ModularNamer { if (_closedWorld.isUsedAsMixin(enclosingClass) || _isShadowingSuperField(element) || _isUserClassExtendingNative(enclosingClass)) { - String proposeName() => '${enclosingClass.name}_${element.name}'; + String proposeName() => '${enclosingClass.name}_${element.name}' + .replaceAll(_nonIdentifierRE, '_'); return _disambiguateInternalMember(element, proposeName); }