Skip to content
Snippets Groups Projects
Commit e87f1dcc authored by Johannes Mey's avatar Johannes Mey
Browse files

embedded java for attribute blocks

parent c812d74b
No related branches found
No related tags found
No related merge requests found
Pipeline #11813 passed
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
### Added ### Added
- Support for IntelliJ IDEA 2021.2.3. - Support for IntelliJ IDEA 2021.2.3.
- Initial support for JastAdd aspect files. - Initial support for JastAdd aspect files.
- syntax highlighter and color settings
- two file types for jrag and jadd
- embedded java for attribute equation blocks
### Changed ### Changed
......
...@@ -33,8 +33,8 @@ ...@@ -33,8 +33,8 @@
// //
//java_block ::= JAVABLOCK //java_block ::= JAVABLOCK
//{ //{
// implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaBlockExtension" // implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension"
// extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaBlockImplExtension" // extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaImplExtension"
//} //}
// aspect_body_declarations_eof ::= aspect_body_declaration* EOF // aspect_body_declarations_eof ::= aspect_body_declaration* EOF
...@@ -278,8 +278,8 @@ annotation ::= ( normal_annotation | single_member_annotation | marker_annotatio ...@@ -278,8 +278,8 @@ annotation ::= ( normal_annotation | single_member_annotation | marker_annotatio
//class_body_declaration_in_paren ::= JAVA_IN_PAREN //class_body_declaration_in_paren ::= JAVA_IN_PAREN
//{ //{
// implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaBlockExtension" // implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension"
// extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaBlockImplExtension" // extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaImplExtension"
//} //}
// should be parsed after circular and in collection attributes // should be parsed after circular and in collection attributes
...@@ -303,6 +303,10 @@ enum_declaration ::= ENUM_ANYTHING_LBRACE_ANYTHING_RBRACE // ENUM java_identifie ...@@ -303,6 +303,10 @@ enum_declaration ::= ENUM_ANYTHING_LBRACE_ANYTHING_RBRACE // ENUM java_identifie
// only within attribute equations // only within attribute equations
block ::= LBRACE_ANYTHING_RBRACE block ::= LBRACE_ANYTHING_RBRACE
{
implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension"
extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaImplExtension"
}
// TODO unsupported // TODO unsupported
......
...@@ -9,7 +9,7 @@ import com.intellij.psi.PsiLanguageInjectionHost; ...@@ -9,7 +9,7 @@ import com.intellij.psi.PsiLanguageInjectionHost;
import org.jastadd.tooling.aspect.psi.*; import org.jastadd.tooling.aspect.psi.*;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class JavaBlockLanguageInjector implements LanguageInjector { public class JavaLanguageInjector implements LanguageInjector {
/** /**
* @param host PSI element inside which your language will be injected. * @param host PSI element inside which your language will be injected.
...@@ -24,7 +24,6 @@ public class JavaBlockLanguageInjector implements LanguageInjector { ...@@ -24,7 +24,6 @@ public class JavaBlockLanguageInjector implements LanguageInjector {
if (host.isValidHost()) { if (host.isValidHost()) {
if (host instanceof JastAddAspectExpressionInBrackets) { if (host instanceof JastAddAspectExpressionInBrackets) {
// TODO // TODO
injectionPlacesRegistrar.addPlace(JavaLanguage.INSTANCE, new TextRange(0, host.getTextLength()), "class X { public void m(){", "}");
} else if (host instanceof JastAddAspectNormalAnnotation) { } else if (host instanceof JastAddAspectNormalAnnotation) {
// TODO // TODO
} else if (host instanceof JastAddAspectSingleMemberAnnotation) { } else if (host instanceof JastAddAspectSingleMemberAnnotation) {
...@@ -37,6 +36,8 @@ public class JavaBlockLanguageInjector implements LanguageInjector { ...@@ -37,6 +36,8 @@ public class JavaBlockLanguageInjector implements LanguageInjector {
// TODO // TODO
} else if (host instanceof JastAddAspectAnnotationTypeDeclaration) { } else if (host instanceof JastAddAspectAnnotationTypeDeclaration) {
// TODO // TODO
} else if (host instanceof JastAddAspectBlock) {
injectionPlacesRegistrar.addPlace(JavaLanguage.INSTANCE, new TextRange(0, host.getTextLength()), "class X { public void m()", "}");
} }
} }
} }
......
package org.jastadd.tooling.aspect.psi;
public interface JastAddAspectJavaBlockExtension extends com.intellij.psi.PsiLanguageInjectionHost {
}
package org.jastadd.tooling.aspect.psi;
public interface JastAddAspectJavaExtension extends com.intellij.psi.PsiLanguageInjectionHost {
}
...@@ -2,15 +2,13 @@ package org.jastadd.tooling.aspect.psi.impl; ...@@ -2,15 +2,13 @@ package org.jastadd.tooling.aspect.psi.impl;
import com.intellij.extapi.psi.ASTWrapperPsiElement; import com.intellij.extapi.psi.ASTWrapperPsiElement;
import com.intellij.lang.ASTNode; import com.intellij.lang.ASTNode;
import com.intellij.psi.LiteralTextEscaper; import com.intellij.psi.*;
import com.intellij.psi.PsiElement; import org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension;
import com.intellij.psi.PsiLanguageInjectionHost;
import org.jastadd.tooling.aspect.psi.JastAddAspectJavaBlockExtension;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class JastAddAspectJavaBlockImplExtension extends ASTWrapperPsiElement implements JastAddAspectJavaBlockExtension { public class JastAddAspectJavaImplExtension extends ASTWrapperPsiElement implements JastAddAspectJavaExtension {
public JastAddAspectJavaBlockImplExtension(@NotNull ASTNode node) { public JastAddAspectJavaImplExtension(@NotNull ASTNode node) {
super(node); super(node);
} }
......
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
<lang.parserDefinition language="JastAddAspect" <lang.parserDefinition language="JastAddAspect"
implementationClass="org.jastadd.tooling.aspect.parser.AspectParserDefinition"/> implementationClass="org.jastadd.tooling.aspect.parser.AspectParserDefinition"/>
<languageInjector implementation="org.jastadd.tooling.aspect.JavaBlockLanguageInjector"/> <languageInjector implementation="org.jastadd.tooling.aspect.JavaLanguageInjector"/>
<lang.syntaxHighlighterFactory language="JastAddAspect" <lang.syntaxHighlighterFactory language="JastAddAspect"
implementationClass="org.jastadd.tooling.aspect.AspectSyntaxHighlighterFactory"/> implementationClass="org.jastadd.tooling.aspect.AspectSyntaxHighlighterFactory"/>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment