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 009 import java.util.Arrays; 010 import java.util.Collections; 011 import java.util.List; 012 013 public final class JsInvocation extends JsExpressionImpl.JsExpressionHasArguments { 014 private JsExpression qualifier; 015 016 public JsInvocation() { 017 super(new SmartList<JsExpression>()); 018 } 019 020 public JsInvocation(JsExpression qualifier, List<JsExpression> arguments) { 021 super(arguments); 022 this.qualifier = qualifier; 023 } 024 025 public JsInvocation(JsExpression qualifier, JsExpression arg) { 026 this(qualifier, Collections.singletonList(arg)); 027 } 028 029 public JsInvocation(JsExpression qualifier, JsExpression... arguments) { 030 this(qualifier, Arrays.asList(arguments)); 031 } 032 033 public JsInvocation(JsExpression qualifier) { 034 this(); 035 this.qualifier = qualifier; 036 } 037 038 @Override 039 public List<JsExpression> getArguments() { 040 return arguments; 041 } 042 043 public JsExpression getQualifier() { 044 return qualifier; 045 } 046 047 public void setQualifier(JsExpression qualifier) { 048 this.qualifier = qualifier; 049 } 050 051 @Override 052 public void accept(JsVisitor v) { 053 v.visitInvocation(this); 054 } 055 056 @Override 057 public void acceptChildren(JsVisitor visitor) { 058 visitor.accept(qualifier); 059 visitor.acceptList(arguments); 060 } 061 }