blob: 1a3a0a2fd4cde16c3140b6a0b2797663ce7ca8c7 [file] [log] [blame]
// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.google.dart.compiler.ast;
import com.google.dart.compiler.resolver.Element;
import java.util.List;
/**
* Common superclass for all invocation expressions. In
* a Dart program, there are different kinds of invocation:
* <ul>
* <li> expression.identifier() is a method invocation, where the
* receiver is 'expression' and the method name 'identifier'.
* This invocation is represented as a DartMethodInvocation.
* Examples: A.foo(), this.foo(), super.foo(), bar().foo().
* </li>
*
* <li> identifier() is an unqualified invocation. After the resolver has
* resolved 'identifier', the normalizer will transform the node to
* either a DartFunctionObjectInvocation or a DartMethodInvocation.
* This invocation is represented as a DartUnqualifiedInvocation.
* Examples: foo().
* </li>
*
* <li> expression() is a function object invocation.
* This invocation is represented as a DartFunctionObjectInvocation.
* Examples: bar()(), (A.bar)(), bar[0](), (bar)().
* </li>
* </ul>
*
*/
public abstract class DartInvocation extends DartExpression {
private final NodeList<DartExpression> arguments = NodeList.create(this);
private Element element;
public DartInvocation(List<DartExpression> arguments) {
if (arguments != null && !arguments.isEmpty()) {
this.arguments.addAll(arguments);
}
}
public DartExpression getTarget() {
return null;
}
public List<DartExpression> getArguments() {
return arguments;
}
@Override
public Element getElement() {
return element;
}
@Override
public void setElement(Element element) {
this.element = element;
}
}