001 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 002 // for details. All rights reserved. Use of this source code is governed by a 003 // BSD-style license that can be found in the LICENSE file. 004 005 package com.google.dart.compiler.backend.js.ast; 006 007 import com.intellij.util.SmartList; 008 import org.jetbrains.annotations.NotNull; 009 010 import java.util.Arrays; 011 import java.util.Collections; 012 import java.util.List; 013 014 public final class JsInvocation extends JsExpressionImpl.JsExpressionHasArguments { 015 private JsExpression qualifier; 016 017 public JsInvocation() { 018 super(new SmartList<JsExpression>()); 019 } 020 021 public JsInvocation(JsExpression qualifier, @NotNull List<JsExpression> arguments) { 022 super(arguments); 023 this.qualifier = qualifier; 024 } 025 026 public JsInvocation(JsExpression qualifier, JsExpression arg) { 027 this(qualifier, Collections.singletonList(arg)); 028 } 029 030 public JsInvocation(JsExpression qualifier, JsExpression... arguments) { 031 this(qualifier, Arrays.asList(arguments)); 032 } 033 034 public JsInvocation(JsExpression qualifier) { 035 this(); 036 this.qualifier = qualifier; 037 } 038 039 @NotNull 040 @Override 041 public List<JsExpression> getArguments() { 042 return arguments; 043 } 044 045 public JsExpression getQualifier() { 046 return qualifier; 047 } 048 049 public void setQualifier(JsExpression qualifier) { 050 this.qualifier = qualifier; 051 } 052 053 @Override 054 public void accept(JsVisitor v) { 055 v.visitInvocation(this); 056 } 057 058 @Override 059 public void acceptChildren(JsVisitor visitor) { 060 visitor.accept(qualifier); 061 visitor.acceptList(arguments); 062 } 063 }