diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-02-12 19:59:45 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-02-12 19:59:45 +0100 |
commit | 627c32b8f4be7447f06635aaa0056d231030cf97 (patch) | |
tree | 3a67d039f85537a7498cf33075dfa5438d749f7b /integration | |
parent | e8891c5f9ee4d0db0531f801f37691f4ab811c2d (diff) |
Parse single-key slice
Diffstat (limited to 'integration')
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} } } |