demo/typescript.js
function getEffectiveCallArguments(node) {
            var args;
            if (node.kind === 170 /* TaggedTemplateExpression */) {
                var template = node.template;
                args = [undefined];
                if (template.kind === 183 /* TemplateExpression */) {
                    ts.forEach(template.templateSpans, function (span) {
                        args.push(span.expression);
                    });
                }
            }
            else if (node.kind === 139 /* Decorator */) {
                // For a decorator, we return undefined as we will determine
                // the number and types of arguments for a decorator using
                // `getEffectiveArgumentCount` and `getEffectiveArgumentType` below.
                return undefined;
            }
            else {
                args = node.arguments || emptyArray;
            }
            return args;
        }
function getEffectiveCallArguments(node) {
            var args;
            if (node.kind === 170 /* TaggedTemplateExpression */) {
                var template = node.template;
                args = [undefined];
                if (template.kind === 183 /* TemplateExpression */) {
                    ts.forEach(template.templateSpans, function (span) {
                        args.push(span.expression);
                    });
                }
            }
            else if (node.kind === 139 /* Decorator */) {
                // For a decorator, we return undefined as we will determine
                // the number and types of arguments for a decorator using
                // `getEffectiveArgumentCount` and `getEffectiveArgumentType` below.
                return undefined;
            }
            else {
                args = node.arguments || emptyArray;
            }
            return args;
        }
Returns the effective arguments for an expression that works like a function invocation.

If 'node' is a CallExpression or a NewExpression, then its argument list is returned.
If 'node' is a TaggedTemplateExpression, a new argument list is constructed from the substitution
expressions, where the first element of the list is `undefined`.
If 'node' is a Decorator, the argument list will be `undefined`, and its arguments and types
will be supplied from calls to `getEffectiveArgumentCount` and `getEffectiveArgumentType`.