From 7bdf25269f6468a16fc2b6c760b15dacf9333451 Mon Sep 17 00:00:00 2001 From: Nathan Zimmerman Date: Tue, 22 Sep 2020 23:27:13 -0500 Subject: [PATCH] Adding support for exponent / ** operator --- README.md | 1 + lib/overload.js | 6 +++++- package.json | 2 +- test/tests.js | 7 +++++++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8a21568..f86b3b8 100644 --- a/README.md +++ b/README.md @@ -127,6 +127,7 @@ Following are the operators which can be overloaded with the desired overload fu | 38 | &= | __andAssign | Assignment | | 39 | \|= | __orAssign | Assignment | | 40 | ^= | __xorAssign | Assignment | +| 41 | `**` | __exponent | Binary | ##Design Consideration / Very IMP / Must Read## diff --git a/lib/overload.js b/lib/overload.js index 50192dd..02647dd 100644 --- a/lib/overload.js +++ b/lib/overload.js @@ -43,7 +43,8 @@ var funcNames = { '>>>=': '__zeroFillRightShiftAssign', '&=': '__andAssign', '|=': '__orAssign', - '^=': '__xorAssign' + '^=': '__xorAssign', + '**': '__exponent' }; //The AST Walker And Transformer @@ -353,6 +354,9 @@ cons.forEach(function (constructor) { defineDefaultProp(constructor, funcNames['^='], function (o) { return o ^= this; }); + defineDefaultProp(constructor, funcNames['**'], function (o) { + return o ** this; + }); }); /* jshint ignore:end */ diff --git a/package.json b/package.json index 47ac272..a3357b8 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,6 @@ "homepage": "https://github.com/kushal-likhi/operator-overloading-js", "dependencies": { "escodegen": "^1.4.1", - "esprima": "^1.2.2" + "esprima": "^4.0.1" } } diff --git a/test/tests.js b/test/tests.js index ea89006..7570237 100644 --- a/test/tests.js +++ b/test/tests.js @@ -42,6 +42,13 @@ describe('Operator overloading Test Suite', function () { done(); }); + it('should overload ** operator', function (done) { + overload(function () { + assertEqual((33 ** 22), '33**22'); + })(); + done(); + }); + it('should overload - operator', function (done) { overload(function () { assertEqual((33 - 22), '33-22');