summaryrefslogtreecommitdiffstats
path: root/integration
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-02-12 19:59:45 +0100
committerJon Bratseth <bratseth@gmail.com>2022-02-12 19:59:45 +0100
commit627c32b8f4be7447f06635aaa0056d231030cf97 (patch)
tree3a67d039f85537a7498cf33075dfa5438d749f7b /integration
parente8891c5f9ee4d0db0531f801f37691f4ab811c2d (diff)
Parse single-key slice
Diffstat (limited to 'integration')
-rw-r--r--integration/intellij/src/main/bnf/ai/vespa/intellij/schema/parser/sd.bnf4
-rw-r--r--integration/intellij/src/main/java/ai/vespa/intellij/schema/model/Schema.java4
-rw-r--r--integration/intellij/src/test/applications/rankprofilemodularity/test.sd3
3 files changed, 7 insertions, 4 deletions
diff --git a/integration/intellij/src/main/bnf/ai/vespa/intellij/schema/parser/sd.bnf b/integration/intellij/src/main/bnf/ai/vespa/intellij/schema/parser/sd.bnf
index cd5ce14ed89..a0c3d22f5a7 100644
--- a/integration/intellij/src/main/bnf/ai/vespa/intellij/schema/parser/sd.bnf
+++ b/integration/intellij/src/main/bnf/ai/vespa/intellij/schema/parser/sd.bnf
@@ -110,7 +110,7 @@ AnnotationFieldDefinition ::= field IdentifierVal type FieldTypeName '{' '}'
//--- Expressions rules ---
//-------------------------
RankingExpression ::= FilePathExpr | ParenthesisedExpr | BooleanExpr | ArithmeticExpr | IfFunctionExpr |
- QueryDefinitionExpr | FunctionCallExpr | InListRankingExpr | PrimitiveExpr
+ QueryDefinitionExpr | FunctionCallExpr | InListRankingExpr | PrimitiveExpr | TensorExpr
FilePathExpr ::= file ':' (FilePath | WordWrapper)
@@ -129,6 +129,8 @@ ParenthesisedExpr ::= '(' RankingExpression ')'
PrimitiveExpr ::= (('-')? INTEGER_REG) | (('-')? FLOAT_REG) | IdentifierVal | RankFeature | STRING_REG
+TensorExpr ::= RankingExpression '{' IdentifierVal '}'
+
//-------------------------
//-- Rank Profile rules ---
//-------------------------
diff --git a/integration/intellij/src/main/java/ai/vespa/intellij/schema/model/Schema.java b/integration/intellij/src/main/java/ai/vespa/intellij/schema/model/Schema.java
index 6479f48a214..2ba1295baf4 100644
--- a/integration/intellij/src/main/java/ai/vespa/intellij/schema/model/Schema.java
+++ b/integration/intellij/src/main/java/ai/vespa/intellij/schema/model/Schema.java
@@ -43,7 +43,9 @@ public class Schema {
public Optional<Schema> inherited() {
if (inherited != null) return inherited;
- return inherited = AST.inherits(PsiTreeUtil.collectElementsOfType(definition, SdSchemaDefinition.class).stream().findFirst().get())
+ Optional<SdSchemaDefinition> schemaDefinition = PsiTreeUtil.collectElementsOfType(definition, SdSchemaDefinition.class).stream().findFirst();
+ if (schemaDefinition.isEmpty()) return Optional.empty(); // No valid schema definition in schema file
+ return inherited = AST.inherits(schemaDefinition.get())
.stream()
.findFirst() // Only one schema can be inherited; ignore any following
.map(inheritedNode -> fromProjectFile(project, path.getParentPath().append(inheritedNode.getText() + ".sd")));
diff --git a/integration/intellij/src/test/applications/rankprofilemodularity/test.sd b/integration/intellij/src/test/applications/rankprofilemodularity/test.sd
index 34ca174ba5e..78645fd4cce 100644
--- a/integration/intellij/src/test/applications/rankprofilemodularity/test.sd
+++ b/integration/intellij/src/test/applications/rankprofilemodularity/test.sd
@@ -21,8 +21,7 @@ schema test {
}
function tensorFunction(myTensor) {
- expression: myTensor
- # expression: myTensor{key} TODO
+ expression: myTensor{key}
}
}