aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar fzaiser <fzaiser@google.com>2017-08-16 12:01:14 +0200
committerGravatar Irina Iancu <elenairina@google.com>2017-08-17 09:41:40 +0200
commit7b233c4604dc08ca4ca90eab59083a472f97a502 (patch)
treeffbecd5673d96152d5508d5a3088b47f8bc5622a /src/main/java
parentc69dbf8ed4893066d0474f87c0a8ddae00e4ee58 (diff)
Remove methods that shouldn't belong to FuncallExpr
RELNOTES: None PiperOrigin-RevId: 165419360
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java27
2 files changed, 13 insertions, 29 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java
index 9d123ca6a3..b8aea7c1ef 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java
@@ -35,14 +35,16 @@ import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkSignature;
import com.google.devtools.build.lib.syntax.BaseFunction;
import com.google.devtools.build.lib.syntax.BuiltinFunction;
+import com.google.devtools.build.lib.syntax.DotExpression;
import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.Expression;
import com.google.devtools.build.lib.syntax.FuncallExpression;
import com.google.devtools.build.lib.syntax.FunctionSignature;
+import com.google.devtools.build.lib.syntax.Identifier;
import com.google.devtools.build.lib.syntax.Runtime;
import com.google.devtools.build.lib.syntax.SkylarkDict;
import com.google.devtools.build.lib.syntax.SkylarkList;
import com.google.devtools.build.lib.syntax.SkylarkSignatureProcessor;
-import com.google.devtools.build.lib.util.Preconditions;
import java.util.Map;
/**
@@ -156,7 +158,16 @@ public class SkylarkRepositoryModule {
public Object call(
Object[] args, FuncallExpression ast, com.google.devtools.build.lib.syntax.Environment env)
throws EvalException, InterruptedException {
- String ruleClassName = Preconditions.checkNotNull(ast.getFunctionNameIfPossible());
+ String ruleClassName = null;
+ Expression function = ast.getFunction();
+ if (function instanceof Identifier) {
+ ruleClassName = ((Identifier) function).getName();
+ } else if (function instanceof DotExpression) {
+ ruleClassName = ((DotExpression) function).getField().getName();
+ } else {
+ // TODO: Remove the wrong assumption that a "function name" always exists and is relevant
+ throw new IllegalStateException("Function is not an identifier or method call");
+ }
try {
RuleClass ruleClass = builder.build(ruleClassName);
PackageContext context = PackageFactory.getContext(env, ast);
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
index 0eb87da305..55ae49d49b 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
@@ -204,33 +204,6 @@ public final class FuncallExpression extends Expression {
}
/**
- * Returns the name of the called function if it's available in the AST.
- *
- * <p>It may not be available in cases like `list[0](arg1, arg2)`.
- */
- @Nullable
- public String getFunctionNameIfPossible() {
- Identifier ident = getFunctionIdentifierIfPossible();
- return ident == null ? null : ident.getName();
- }
-
- /**
- * Returns the identifier of the called function if it's available in the AST.
- *
- * <p>It may not be available in cases like `list[0](arg1, arg2)`.
- */
- @Nullable
- public Identifier getFunctionIdentifierIfPossible() {
- if (function instanceof Identifier) {
- return (Identifier) function;
- }
- if (function instanceof DotExpression) {
- return ((DotExpression) function).getField();
- }
- return null;
- }
-
- /**
* Returns the number of positional arguments.
*/
private int countPositionalArguments() {