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

Unified Diff: src/mirror-debugger.js

Issue 297513006: Implement Mirror object for Symbols. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: addressed comments Created 6 years, 7 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
« no previous file with comments | « no previous file | test/mjsunit/es6/mirror-symbols.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/mirror-debugger.js
diff --git a/src/mirror-debugger.js b/src/mirror-debugger.js
index 124347b7bd5b72cd7a977750b91a2d608aa951e2..2695e019f1c1eace947cc1c8ea5ff3e73ec5833a 100644
--- a/src/mirror-debugger.js
+++ b/src/mirror-debugger.js
@@ -68,6 +68,8 @@ function MakeMirror(value, opt_transient) {
mirror = new NumberMirror(value);
} else if (IS_STRING(value)) {
mirror = new StringMirror(value);
+ } else if (IS_SYMBOL(value)) {
+ mirror = new SymbolMirror(value);
} else if (IS_ARRAY(value)) {
mirror = new ArrayMirror(value);
} else if (IS_DATE(value)) {
@@ -141,6 +143,7 @@ var NULL_TYPE = 'null';
var BOOLEAN_TYPE = 'boolean';
var NUMBER_TYPE = 'number';
var STRING_TYPE = 'string';
+var SYMBOL_TYPE = 'symbol';
var OBJECT_TYPE = 'object';
var FUNCTION_TYPE = 'function';
var REGEXP_TYPE = 'regexp';
@@ -198,6 +201,7 @@ var ScopeType = { Global: 0,
// - NullMirror
// - NumberMirror
// - StringMirror
+// - SymbolMirror
// - ObjectMirror
// - FunctionMirror
// - UnresolvedFunctionMirror
@@ -282,6 +286,15 @@ Mirror.prototype.isString = function() {
/**
+ * Check whether the mirror reflects a symbol.
+ * @returns {boolean} True if the mirror reflects a symbol
+ */
+Mirror.prototype.isSymbol = function() {
+ return this instanceof SymbolMirror;
+};
+
+
+/**
* Check whether the mirror reflects an object.
* @returns {boolean} True if the mirror reflects an object
*/
@@ -466,7 +479,8 @@ ValueMirror.prototype.isPrimitive = function() {
type === 'null' ||
type === 'boolean' ||
type === 'number' ||
- type === 'string';
+ type === 'string' ||
+ type === 'symbol';
};
@@ -575,6 +589,28 @@ StringMirror.prototype.toText = function() {
/**
+ * Mirror object for a Symbol
+ * @param {Object} value The Symbol
+ * @constructor
+ * @extends Mirror
+ */
+function SymbolMirror(value) {
+ %_CallFunction(this, SYMBOL_TYPE, value, ValueMirror);
+}
+inherits(SymbolMirror, ValueMirror);
+
+
+SymbolMirror.prototype.description = function() {
+ return %SymbolDescription(%_ValueOf(this.value_));
+}
+
+
+SymbolMirror.prototype.toText = function() {
+ return %_CallFunction(this.value_, builtins.SymbolToString);
+}
+
+
+/**
* Mirror object for objects.
* @param {object} value The object reflected by this mirror
* @param {boolean} transient indicate whether this object is transient with a
@@ -1184,9 +1220,9 @@ ErrorMirror.prototype.toText = function() {
/**
* Mirror object for a Promise object.
- * @param {Object} data The Promise object
+ * @param {Object} value The Promise object
* @constructor
- * @extends Mirror
+ * @extends ObjectMirror
*/
function PromiseMirror(value) {
%_CallFunction(this, value, PROMISE_TYPE, ObjectMirror);
@@ -2318,6 +2354,9 @@ JSONProtocolSerializer.prototype.serializeReferenceWithDisplayData_ =
case STRING_TYPE:
o.value = mirror.getTruncatedValue(this.maxStringLength_());
break;
+ case SYMBOL_TYPE:
+ o.description = mirror.description();
+ break;
case FUNCTION_TYPE:
o.name = mirror.name();
o.inferredName = mirror.inferredName();
@@ -2392,6 +2431,10 @@ JSONProtocolSerializer.prototype.serialize_ = function(mirror, reference,
content.length = mirror.length();
break;
+ case SYMBOL_TYPE:
+ content.description = mirror.description();
+ break;
+
case OBJECT_TYPE:
case FUNCTION_TYPE:
case ERROR_TYPE:
« no previous file with comments | « no previous file | test/mjsunit/es6/mirror-symbols.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698