Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Unified Diff: dart/runtime/lib/symbol_patch.dart

Issue 14173005: Update dart:mirrors to use Symbol. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Add question about LibraryMirror.url Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: dart/runtime/lib/symbol_patch.dart
diff --git a/dart/runtime/lib/symbol_patch.dart b/dart/runtime/lib/symbol_patch.dart
index 67713487371ad5a5843055b030a3f6b09f229c1e..d46cbf6dbfca357b24be6cac722c03d3f8029919 100644
--- a/dart/runtime/lib/symbol_patch.dart
+++ b/dart/runtime/lib/symbol_patch.dart
@@ -9,27 +9,51 @@ patch class Symbol {
static final RegExp _validationPattern =
- new RegExp(r'^[a-zA-Z$][a-zA-Z$0-9_]*=?');
+ new RegExp(r'^(?:[a-zA-Z$][a-zA-Z$0-9_]*=?|'
+ r'-|'
+ r'\[\]=|'
+ r'~|'
+ r'==|'
+ r'\[\]|'
+ r'\*|'
+ r'/|'
+ r'%|'
+ r'~/|'
+ r'\+|'
+ r'<<|'
+ r'>>|'
+ r'>=|'
+ r'>|'
+ r'<=|'
+ r'<|'
+ r'&|'
+ r'\^|'
+ r'\|'
+ r')');
static _validate(String name) {
if (name is! String) throw new ArgumentError('name must be a String');
- if (name.isEmpty) return;
+ if (name.isEmpty) return name;
ahe 2013/04/11 20:12:27 Note to self: I need to update the symbol_test.dar
ahe 2013/04/15 12:34:02 Done.
if (name.startsWith('_')) {
throw new ArgumentError('"$name" is a private identifier');
}
if (!_validationPattern.hasMatch(name)) {
throw new ArgumentError(
- '"$name" is not an identifier or an empty String');
+ '"$name" is not an identifier or an empty String');
}
return name;
}
/* patch */ bool operator ==(other) {
- return other is Symbol && _name == other._name;
+ return other is Symbol &&
+ Symbol == other.runtimeType &&
+ _name == other._name;
}
/* patch */ int get hashCode {
const arbitraryPrime = 664597;
return 0x1fffffff & (arbitraryPrime * _name.hashCode);
}
+
+ /* patch */ static String getName(Symbol symbol) => symbol._name;
ahe 2013/04/11 20:12:27 I should not submit this change.
Ivan Posva 2013/04/12 04:16:18 Why not?
ahe 2013/04/15 12:34:02 Because this method needs to be in the mirror API,
}

Powered by Google App Engine
This is Rietveld 408576698