From 26a09f08cf1ed43c640879f23fdad56c5c9282f7 Mon Sep 17 00:00:00 2001
From: HelenHuang <LinHuang@pollex.com.tw>
Date: 星期四, 09 六月 2022 15:02:38 +0800
Subject: [PATCH] TODO#139884 Banner 1 文案調整

---
 PAMapp/node_modules/@babel/generator/lib/generators/expressions.js |   77 ++++++++++++++++++++++++++++----------
 1 files changed, 57 insertions(+), 20 deletions(-)

diff --git a/PAMapp/node_modules/@babel/generator/lib/generators/expressions.js b/PAMapp/node_modules/@babel/generator/lib/generators/expressions.js
index a0f293f..c1caf0d 100644
--- a/PAMapp/node_modules/@babel/generator/lib/generators/expressions.js
+++ b/PAMapp/node_modules/@babel/generator/lib/generators/expressions.js
@@ -3,31 +3,32 @@
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
-exports.UnaryExpression = UnaryExpression;
-exports.DoExpression = DoExpression;
-exports.ParenthesizedExpression = ParenthesizedExpression;
-exports.UpdateExpression = UpdateExpression;
-exports.ConditionalExpression = ConditionalExpression;
-exports.NewExpression = NewExpression;
-exports.SequenceExpression = SequenceExpression;
-exports.ThisExpression = ThisExpression;
-exports.Super = Super;
-exports.Decorator = Decorator;
-exports.OptionalMemberExpression = OptionalMemberExpression;
-exports.OptionalCallExpression = OptionalCallExpression;
+exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression;
+exports.AssignmentPattern = AssignmentPattern;
+exports.AwaitExpression = void 0;
+exports.BindExpression = BindExpression;
 exports.CallExpression = CallExpression;
-exports.Import = Import;
+exports.ConditionalExpression = ConditionalExpression;
+exports.Decorator = Decorator;
+exports.DoExpression = DoExpression;
 exports.EmptyStatement = EmptyStatement;
 exports.ExpressionStatement = ExpressionStatement;
-exports.AssignmentPattern = AssignmentPattern;
-exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression;
-exports.BindExpression = BindExpression;
+exports.Import = Import;
 exports.MemberExpression = MemberExpression;
 exports.MetaProperty = MetaProperty;
-exports.PrivateName = PrivateName;
-exports.V8IntrinsicIdentifier = V8IntrinsicIdentifier;
 exports.ModuleExpression = ModuleExpression;
-exports.AwaitExpression = exports.YieldExpression = void 0;
+exports.NewExpression = NewExpression;
+exports.OptionalCallExpression = OptionalCallExpression;
+exports.OptionalMemberExpression = OptionalMemberExpression;
+exports.ParenthesizedExpression = ParenthesizedExpression;
+exports.PrivateName = PrivateName;
+exports.SequenceExpression = SequenceExpression;
+exports.Super = Super;
+exports.ThisExpression = ThisExpression;
+exports.UnaryExpression = UnaryExpression;
+exports.UpdateExpression = UpdateExpression;
+exports.V8IntrinsicIdentifier = V8IntrinsicIdentifier;
+exports.YieldExpression = void 0;
 
 var _t = require("@babel/types");
 
@@ -127,9 +128,45 @@
   this.word("super");
 }
 
+function isDecoratorMemberExpression(node) {
+  switch (node.type) {
+    case "Identifier":
+      return true;
+
+    case "MemberExpression":
+      return !node.computed && node.property.type === "Identifier" && isDecoratorMemberExpression(node.object);
+
+    default:
+      return false;
+  }
+}
+
+function shouldParenthesizeDecoratorExpression(node) {
+  if (node.type === "CallExpression") {
+    node = node.callee;
+  }
+
+  if (node.type === "ParenthesizedExpression") {
+    return false;
+  }
+
+  return !isDecoratorMemberExpression(node);
+}
+
 function Decorator(node) {
   this.token("@");
-  this.print(node.expression, node);
+  const {
+    expression
+  } = node;
+
+  if (shouldParenthesizeDecoratorExpression(expression)) {
+    this.token("(");
+    this.print(expression, node);
+    this.token(")");
+  } else {
+    this.print(expression, node);
+  }
+
   this.newline();
 }
 

--
Gitblit v1.8.0