Issue #2026 - Part 3c - Add BigInt Devtools support. (new frontend)

This commit is contained in:
Martok 2023-07-29 01:39:08 +02:00 committed by roytam1
commit 9042881cea
4 changed files with 121 additions and 9 deletions

View file

@ -0,0 +1,48 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
// Make this available to both AMD and CJS environments
define(function (require, exports, module) {
// Dependencies
const React = require("devtools/client/shared/vendor/react");
// Shortcuts
const { span } = React.DOM;
/**
* Renders a BigInt
*/
const BigInt = React.createClass({
displayName: "BigInt",
propTypes: {
object: React.PropTypes.object.isRequired
},
render: function () {
let {object} = this.props;
let {text} = object;
return (
span({className: "objectBox objectBox-number"},
`${text}n`
)
);
}
});
function supportsObject(object, type) {
return (type == "BigInt");
}
// Exports from this module
exports.BigInt = {
rep: BigInt,
supportsObject: supportsObject
};
});

View file

@ -6,6 +6,7 @@
DevToolsModules(
'array.js',
'attribute.js',
'big-int.js',
'caption.js',
'comment-node.js',
'date-time.js',

View file

@ -26,6 +26,7 @@ define(function (require, exports, module) {
// DOM types (grips)
const { Attribute } = require("./attribute");
const { BigInt } = require("./big-int");
const { DateTime } = require("./date-time");
const { Document } = require("./document");
const { Event } = require("./event");
@ -70,6 +71,7 @@ define(function (require, exports, module) {
Null,
StringRep,
Number,
BigInt,
SymbolRep,
InfinityRep,
NaNRep,
@ -111,10 +113,12 @@ define(function (require, exports, module) {
*/
function getRep(object, defaultRep = Obj) {
let type = typeof object;
if (type == "object" && object instanceof String) {
type = "string";
} else if (object && type == "object" && object.type) {
type = object.type;
if (type == "object") {
if (object instanceof String) {
type = "string";
} else if (["symbol", "BigInt"].includes(object.type)) {
type = object.type;
}
}
if (isGrip(object)) {