From ebb469e4cdc69718e8d410bb69435e84225d9955 Mon Sep 17 00:00:00 2001 From: kzc Date: Tue, 16 May 2017 15:29:25 -0400 Subject: [PATCH] fix class extends expression (#1956) --- lib/output.js | 14 ++++++++++++-- test/compress/harmony.js | 12 ++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/output.js b/lib/output.js index 5d130055..54611184 100644 --- a/lib/output.js +++ b/lib/output.js @@ -1474,10 +1474,20 @@ function OutputStream(options) { output.space(); } if (self.extends) { + var parens = self.extends instanceof AST_Binary || + self.extends instanceof AST_Conditional; output.print("extends"); - output.space(); + if (parens) { + output.print("("); + } else { + output.space(); + } self.extends.print(output); - output.space(); + if (parens) { + output.print(")"); + } else { + output.space(); + } } if (self.properties.length > 0) output.with_block(function(){ self.properties.forEach(function(prop, i){ diff --git a/test/compress/harmony.js b/test/compress/harmony.js index a56e7757..15df5349 100644 --- a/test/compress/harmony.js +++ b/test/compress/harmony.js @@ -533,3 +533,15 @@ issue_1753_disable: { } } } + +class_extends_expression: { + options = { + evaluate: true + } + input: { + class bin extends (a || b) {} + class seq extends (a, b) {} + class ter extends (a ? b : c) {} + } + expect_exact: "class bin extends(a||b){}class seq extends(a,b){}class ter extends(a?b:c){}" +}