From 62cbe6c6f7c2319a7a168e141b9689db905fb177 Mon Sep 17 00:00:00 2001 From: Johannes Mey <johannes.mey@tu-dresden.de> Date: Tue, 16 Nov 2021 18:20:08 +0100 Subject: [PATCH] more injections --- src/main/grammar/Aspect.bnf | 12 ++++++++++++ .../tooling/aspect/JavaLanguageInjector.java | 14 ++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/main/grammar/Aspect.bnf b/src/main/grammar/Aspect.bnf index c888580..45f4a3c 100644 --- a/src/main/grammar/Aspect.bnf +++ b/src/main/grammar/Aspect.bnf @@ -78,6 +78,10 @@ aspect_body_declaration ::= ( aspect_refine_inh_equation | aspect_cache_declaration ) aspect_class_declaration ::= modifiers class_declaration +{ + implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension" + extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaImplExtension" +} aspect_interface_declaration ::= modifiers INTERFACE IDENTIFIER type_parameters? (EXTENDS type_name_list)? LBRACE aspect_interface_member_declaration* RBRACE @@ -208,6 +212,10 @@ name_name ::= java_identifier (DOT java_identifier)* name_list ::= name_name (COMMA name_name)* expression ::= lambda_expression | ( conditional_expression (assignment_operator expression)? ) +{ + implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension" + extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaImplExtension" +} assignment_operator ::= ASSIGN | STARASSIGN | SLASHASSIGN | REMASSIGN | PLUSASSIGN | MINUSASSIGN | LSHIFTASSIGN | RSIGNEDSHIFTASSIGN | RUNSIGNEDSHIFTASSIGN | ANDASSIGN | XORASSIGN | ORASSIGN @@ -305,6 +313,10 @@ annotation ::= ( normal_annotation | single_member_annotation | marker_annotatio // should be parsed after circular and in collection attributes expression_in_brackets ::= LBRACKET_ANYTHING_RBRACKET // LBRACKET expression RBRACKET +{ + implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension" + extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaImplExtension" +} // at symbol only in these rules marker_annotation ::= AT_NAME diff --git a/src/main/java/org/jastadd/tooling/aspect/JavaLanguageInjector.java b/src/main/java/org/jastadd/tooling/aspect/JavaLanguageInjector.java index b07e711..13770ce 100644 --- a/src/main/java/org/jastadd/tooling/aspect/JavaLanguageInjector.java +++ b/src/main/java/org/jastadd/tooling/aspect/JavaLanguageInjector.java @@ -22,14 +22,10 @@ public class JavaLanguageInjector implements LanguageInjector { @Override public void getLanguagesToInject(@NotNull PsiLanguageInjectionHost host, @NotNull InjectedLanguagePlaces injectionPlacesRegistrar) { if (host.isValidHost()) { - if (host instanceof JastAddAspectExpressionInBrackets) { - // TODO - } else if (host instanceof JastAddAspectNormalAnnotation) { + if (host instanceof JastAddAspectNormalAnnotation) { // TODO } else if (host instanceof JastAddAspectSingleMemberAnnotation) { // TODO - } else if (host instanceof JastAddAspectClassDeclaration) { - // TODO } else if (host instanceof JastAddAspectInterfaceDeclaration) { // TODO } else if (host instanceof JastAddAspectEnumDeclaration) { @@ -37,7 +33,13 @@ public class JavaLanguageInjector implements LanguageInjector { } else if (host instanceof JastAddAspectAnnotationTypeDeclaration) { // TODO } else if (host instanceof JastAddAspectBlock) { - injectionPlacesRegistrar.addPlace(JavaLanguage.INSTANCE, new TextRange(0, host.getTextLength()), "class X { public void m()", "}"); + injectionPlacesRegistrar.addPlace(JavaLanguage.INSTANCE, new TextRange(1, host.getTextLength() - 1), "class X { public void m() {", "}}"); + } else if (host instanceof JastAddAspectExpression) { + injectionPlacesRegistrar.addPlace(JavaLanguage.INSTANCE, new TextRange(0, host.getTextLength()), "class X { public void m() {Object x = ", ";}}"); + } else if (host instanceof JastAddAspectExpressionInBrackets) { + injectionPlacesRegistrar.addPlace(JavaLanguage.INSTANCE, new TextRange(1, host.getTextLength() - 1), "class X { public void m() {Object x = ", ";}}"); + } else if (host instanceof JastAddAspectAspectClassDeclaration) { + injectionPlacesRegistrar.addPlace(JavaLanguage.INSTANCE, new TextRange(0, host.getTextLength()), "", ""); } } } -- GitLab