Commit 776207cf authored by Tesla Ice Zhang's avatar Tesla Ice Zhang Committed by Xianwen Chen

Improve IDEA plugin (#363)

* Added:

+ brace matcher
+ highlight for keywords

* Revert license

* Fix nullability bug

* Update version
parent f29210d5
out/
*~
resources/META-INF
\ No newline at end of file
...@@ -13,10 +13,10 @@ ...@@ -13,10 +13,10 @@
~ See the License for the specific language governing permissions and ~ See the License for the specific language governing permissions and
~ limitations under the License. ~ limitations under the License.
--> -->
<idea-plugin version="2"> <idea-plugin>
<id>com.dropbox.djinni.ideaplugin</id> <id>com.dropbox.djinni.ideaplugin</id>
<name>Djinni IDL file support</name> <name>Djinni IDL file support</name>
<version>0.8</version> <version>0.8.1</version>
<vendor url="https://github.com/dropbox/djinni">Dropbox Djinni Github Project</vendor> <vendor url="https://github.com/dropbox/djinni">Dropbox Djinni Github Project</vendor>
<description><![CDATA[ <description><![CDATA[
...@@ -70,6 +70,7 @@ ...@@ -70,6 +70,7 @@
<lang.psiStructureViewFactory language="Djinni" implementationClass="com.dropbox.djinni.ideaplugin.DjinniStructureViewFactory"/> <lang.psiStructureViewFactory language="Djinni" implementationClass="com.dropbox.djinni.ideaplugin.DjinniStructureViewFactory"/>
<lang.formatter language="Djinni" implementationClass="com.dropbox.djinni.ideaplugin.DjinniFormattingModelBuilder"/> <lang.formatter language="Djinni" implementationClass="com.dropbox.djinni.ideaplugin.DjinniFormattingModelBuilder"/>
<lang.commenter language="Djinni" implementationClass="com.dropbox.djinni.ideaplugin.DjinniCommenter"/> <lang.commenter language="Djinni" implementationClass="com.dropbox.djinni.ideaplugin.DjinniCommenter"/>
<lang.braceMatcher language="Djinni" implementationClass="com.dropbox.djinni.ideaplugin.DjinniBraceMatcher"/>
</extensions> </extensions>
<application-components> <application-components>
......
...@@ -25,4 +25,7 @@ public interface DjinniConstMember extends PsiElement { ...@@ -25,4 +25,7 @@ public interface DjinniConstMember extends PsiElement {
@NotNull @NotNull
PsiElement getSemicolon(); PsiElement getSemicolon();
@NotNull
PsiElement getConst();
} }
...@@ -7,4 +7,10 @@ import com.intellij.psi.PsiElement; ...@@ -7,4 +7,10 @@ import com.intellij.psi.PsiElement;
public interface DjinniDerivingParam extends PsiElement { public interface DjinniDerivingParam extends PsiElement {
@Nullable
PsiElement getEqKeyword();
@Nullable
PsiElement getOrd();
} }
...@@ -7,4 +7,7 @@ import com.intellij.psi.PsiElement; ...@@ -7,4 +7,7 @@ import com.intellij.psi.PsiElement;
public interface DjinniEnumTypeVariant extends PsiElement { public interface DjinniEnumTypeVariant extends PsiElement {
@NotNull
PsiElement getEnum();
} }
...@@ -12,6 +12,9 @@ public interface DjinniExternStatement extends PsiNamedElement { ...@@ -12,6 +12,9 @@ public interface DjinniExternStatement extends PsiNamedElement {
@NotNull @NotNull
PsiElement getAt(); PsiElement getAt();
@NotNull
PsiElement getExtern();
@NotNull @NotNull
PsiElement getStringLiteral(); PsiElement getStringLiteral();
......
...@@ -12,6 +12,9 @@ public interface DjinniImportStatement extends PsiNamedElement { ...@@ -12,6 +12,9 @@ public interface DjinniImportStatement extends PsiNamedElement {
@NotNull @NotNull
PsiElement getAt(); PsiElement getAt();
@NotNull
PsiElement getImport();
@NotNull @NotNull
PsiElement getStringLiteral(); PsiElement getStringLiteral();
......
...@@ -28,4 +28,7 @@ public interface DjinniInterfaceMemberFunction extends PsiElement { ...@@ -28,4 +28,7 @@ public interface DjinniInterfaceMemberFunction extends PsiElement {
@NotNull @NotNull
PsiElement getIdentifier(); PsiElement getIdentifier();
@Nullable
PsiElement getStatic();
} }
...@@ -10,4 +10,7 @@ public interface DjinniInterfaceTypeVariant extends PsiElement { ...@@ -10,4 +10,7 @@ public interface DjinniInterfaceTypeVariant extends PsiElement {
@NotNull @NotNull
List<DjinniGenerator> getGeneratorList(); List<DjinniGenerator> getGeneratorList();
@NotNull
PsiElement getInterface();
} }
...@@ -10,4 +10,7 @@ public interface DjinniRecordTypeVariant extends PsiElement { ...@@ -10,4 +10,7 @@ public interface DjinniRecordTypeVariant extends PsiElement {
@NotNull @NotNull
List<DjinniGenerator> getGeneratorList(); List<DjinniGenerator> getGeneratorList();
@NotNull
PsiElement getRecord();
} }
...@@ -40,8 +40,14 @@ public interface DjinniTypes { ...@@ -40,8 +40,14 @@ public interface DjinniTypes {
IElementType AT = new DjinniTokenType("@"); IElementType AT = new DjinniTokenType("@");
IElementType COLON = new DjinniTokenType(":"); IElementType COLON = new DjinniTokenType(":");
IElementType COMMENT = new DjinniTokenType("comment"); IElementType COMMENT = new DjinniTokenType("comment");
IElementType CONST = new DjinniTokenType("const");
IElementType ENUM = new DjinniTokenType("enum");
IElementType EQ = new DjinniTokenType("="); IElementType EQ = new DjinniTokenType("=");
IElementType EQ_KEYWORD = new DjinniTokenType("eq");
IElementType EXTERN = new DjinniTokenType("extern");
IElementType IDENTIFIER = new DjinniTokenType("identifier"); IElementType IDENTIFIER = new DjinniTokenType("identifier");
IElementType IMPORT = new DjinniTokenType("import");
IElementType INTERFACE = new DjinniTokenType("interface");
IElementType LEFT_BLOCK_BRACE = new DjinniTokenType("{"); IElementType LEFT_BLOCK_BRACE = new DjinniTokenType("{");
IElementType LEFT_GENERICS_BRACE = new DjinniTokenType("<"); IElementType LEFT_GENERICS_BRACE = new DjinniTokenType("<");
IElementType LEFT_PARAM_BRACE = new DjinniTokenType("("); IElementType LEFT_PARAM_BRACE = new DjinniTokenType("(");
...@@ -50,13 +56,16 @@ public interface DjinniTypes { ...@@ -50,13 +56,16 @@ public interface DjinniTypes {
IElementType MAP = new DjinniTokenType("map"); IElementType MAP = new DjinniTokenType("map");
IElementType NUMBER_LITERAL = new DjinniTokenType("number_literal"); IElementType NUMBER_LITERAL = new DjinniTokenType("number_literal");
IElementType OPTIONAL = new DjinniTokenType("optional"); IElementType OPTIONAL = new DjinniTokenType("optional");
IElementType ORD = new DjinniTokenType("ord");
IElementType PLUS = new DjinniTokenType("+"); IElementType PLUS = new DjinniTokenType("+");
IElementType RECORD = new DjinniTokenType("record");
IElementType RIGHT_BLOCK_BRACE = new DjinniTokenType("}"); IElementType RIGHT_BLOCK_BRACE = new DjinniTokenType("}");
IElementType RIGHT_GENERICS_BRACE = new DjinniTokenType(">"); IElementType RIGHT_GENERICS_BRACE = new DjinniTokenType(">");
IElementType RIGHT_PARAM_BRACE = new DjinniTokenType(")"); IElementType RIGHT_PARAM_BRACE = new DjinniTokenType(")");
IElementType SEMICOLON = new DjinniTokenType(";"); IElementType SEMICOLON = new DjinniTokenType(";");
IElementType SET = new DjinniTokenType("set"); IElementType SET = new DjinniTokenType("set");
IElementType SPACE = new DjinniTokenType("space"); IElementType SPACE = new DjinniTokenType("space");
IElementType STATIC = new DjinniTokenType("static");
IElementType STRING_LITERAL = new DjinniTokenType("string_literal"); IElementType STRING_LITERAL = new DjinniTokenType("string_literal");
IElementType TEXT = new DjinniTokenType("text"); IElementType TEXT = new DjinniTokenType("text");
......
...@@ -17,8 +17,12 @@ public class DjinniBasicTypeImpl extends ASTWrapperPsiElement implements DjinniB ...@@ -17,8 +17,12 @@ public class DjinniBasicTypeImpl extends ASTWrapperPsiElement implements DjinniB
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitBasicType(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitBasicType(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniConstMemberImpl extends ASTWrapperPsiElement implements Djinn ...@@ -17,8 +17,12 @@ public class DjinniConstMemberImpl extends ASTWrapperPsiElement implements Djinn
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitConstMember(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitConstMember(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
...@@ -58,4 +62,10 @@ public class DjinniConstMemberImpl extends ASTWrapperPsiElement implements Djinn ...@@ -58,4 +62,10 @@ public class DjinniConstMemberImpl extends ASTWrapperPsiElement implements Djinn
return findNotNullChildByType(SEMICOLON); return findNotNullChildByType(SEMICOLON);
} }
@Override
@NotNull
public PsiElement getConst() {
return findNotNullChildByType(CONST);
}
} }
...@@ -16,8 +16,12 @@ public class DjinniConstNamedValueImpl extends DjinniReferenceImpl implements Dj ...@@ -16,8 +16,12 @@ public class DjinniConstNamedValueImpl extends DjinniReferenceImpl implements Dj
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitConstNamedValue(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitConstNamedValue(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniConstRecordMemberElementImpl extends ASTWrapperPsiElement imp ...@@ -17,8 +17,12 @@ public class DjinniConstRecordMemberElementImpl extends ASTWrapperPsiElement imp
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitConstRecordMemberElement(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitConstRecordMemberElement(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -16,8 +16,12 @@ public class DjinniConstReferenceImpl extends DjinniReferenceImpl implements Dji ...@@ -16,8 +16,12 @@ public class DjinniConstReferenceImpl extends DjinniReferenceImpl implements Dji
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitConstReference(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitConstReference(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniConstValueImpl extends ASTWrapperPsiElement implements Djinni ...@@ -17,8 +17,12 @@ public class DjinniConstValueImpl extends ASTWrapperPsiElement implements Djinni
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitConstValue(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitConstValue(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,9 +17,25 @@ public class DjinniDerivingParamImpl extends ASTWrapperPsiElement implements Dji ...@@ -17,9 +17,25 @@ public class DjinniDerivingParamImpl extends ASTWrapperPsiElement implements Dji
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitDerivingParam(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitDerivingParam(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
@Override
@Nullable
public PsiElement getEqKeyword() {
return findChildByType(EQ_KEYWORD);
}
@Override
@Nullable
public PsiElement getOrd() {
return findChildByType(ORD);
}
} }
...@@ -17,8 +17,12 @@ public class DjinniDerivingParamListImpl extends ASTWrapperPsiElement implements ...@@ -17,8 +17,12 @@ public class DjinniDerivingParamListImpl extends ASTWrapperPsiElement implements
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitDerivingParamList(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitDerivingParamList(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniEnumMemberImpl extends ASTWrapperPsiElement implements Djinni ...@@ -17,8 +17,12 @@ public class DjinniEnumMemberImpl extends ASTWrapperPsiElement implements Djinni
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitEnumMember(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitEnumMember(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,9 +17,19 @@ public class DjinniEnumTypeVariantImpl extends ASTWrapperPsiElement implements D ...@@ -17,9 +17,19 @@ public class DjinniEnumTypeVariantImpl extends ASTWrapperPsiElement implements D
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitEnumTypeVariant(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitEnumTypeVariant(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
@Override
@NotNull
public PsiElement getEnum() {
return findNotNullChildByType(ENUM);
}
} }
...@@ -16,8 +16,12 @@ public class DjinniEnumValueImpl extends DjinniReferenceImpl implements DjinniEn ...@@ -16,8 +16,12 @@ public class DjinniEnumValueImpl extends DjinniReferenceImpl implements DjinniEn
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitEnumValue(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitEnumValue(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniExternStatementImpl extends DjinniImportStatementBaseImpl imp ...@@ -17,8 +17,12 @@ public class DjinniExternStatementImpl extends DjinniImportStatementBaseImpl imp
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitExternStatement(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitExternStatement(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
...@@ -28,6 +32,12 @@ public class DjinniExternStatementImpl extends DjinniImportStatementBaseImpl imp ...@@ -28,6 +32,12 @@ public class DjinniExternStatementImpl extends DjinniImportStatementBaseImpl imp
return findNotNullChildByType(AT); return findNotNullChildByType(AT);
} }
@Override
@NotNull
public PsiElement getExtern() {
return findNotNullChildByType(EXTERN);
}
@Override @Override
@NotNull @NotNull
public PsiElement getStringLiteral() { public PsiElement getStringLiteral() {
......
...@@ -17,8 +17,12 @@ public class DjinniGeneratorImpl extends ASTWrapperPsiElement implements DjinniG ...@@ -17,8 +17,12 @@ public class DjinniGeneratorImpl extends ASTWrapperPsiElement implements DjinniG
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitGenerator(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitGenerator(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniGenericBasicTypeDualParameterImpl extends ASTWrapperPsiElemen ...@@ -17,8 +17,12 @@ public class DjinniGenericBasicTypeDualParameterImpl extends ASTWrapperPsiElemen
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitGenericBasicTypeDualParameter(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitGenericBasicTypeDualParameter(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniGenericBasicTypeImpl extends ASTWrapperPsiElement implements ...@@ -17,8 +17,12 @@ public class DjinniGenericBasicTypeImpl extends ASTWrapperPsiElement implements
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitGenericBasicType(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitGenericBasicType(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniGenericBasicTypeSingleParameterImpl extends ASTWrapperPsiElem ...@@ -17,8 +17,12 @@ public class DjinniGenericBasicTypeSingleParameterImpl extends ASTWrapperPsiElem
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitGenericBasicTypeSingleParameter(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitGenericBasicTypeSingleParameter(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniImportStatementImpl extends DjinniImportStatementBaseImpl imp ...@@ -17,8 +17,12 @@ public class DjinniImportStatementImpl extends DjinniImportStatementBaseImpl imp
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitImportStatement(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitImportStatement(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
...@@ -28,6 +32,12 @@ public class DjinniImportStatementImpl extends DjinniImportStatementBaseImpl imp ...@@ -28,6 +32,12 @@ public class DjinniImportStatementImpl extends DjinniImportStatementBaseImpl imp
return findNotNullChildByType(AT); return findNotNullChildByType(AT);
} }
@Override
@NotNull
public PsiElement getImport() {
return findNotNullChildByType(IMPORT);
}
@Override @Override
@NotNull @NotNull
public PsiElement getStringLiteral() { public PsiElement getStringLiteral() {
......
...@@ -17,8 +17,12 @@ public class DjinniInterfaceFunctionParamImpl extends ASTWrapperPsiElement imple ...@@ -17,8 +17,12 @@ public class DjinniInterfaceFunctionParamImpl extends ASTWrapperPsiElement imple
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitInterfaceFunctionParam(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitInterfaceFunctionParam(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniInterfaceFunctionParamListImpl extends ASTWrapperPsiElement i ...@@ -17,8 +17,12 @@ public class DjinniInterfaceFunctionParamListImpl extends ASTWrapperPsiElement i
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitInterfaceFunctionParamList(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitInterfaceFunctionParamList(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniInterfaceMemberFunctionImpl extends ASTWrapperPsiElement impl ...@@ -17,8 +17,12 @@ public class DjinniInterfaceMemberFunctionImpl extends ASTWrapperPsiElement impl
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitInterfaceMemberFunction(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitInterfaceMemberFunction(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
...@@ -64,4 +68,10 @@ public class DjinniInterfaceMemberFunctionImpl extends ASTWrapperPsiElement impl ...@@ -64,4 +68,10 @@ public class DjinniInterfaceMemberFunctionImpl extends ASTWrapperPsiElement impl
return findNotNullChildByType(IDENTIFIER); return findNotNullChildByType(IDENTIFIER);
} }
@Override
@Nullable
public PsiElement getStatic() {
return findChildByType(STATIC);
}
} }
...@@ -17,8 +17,12 @@ public class DjinniInterfaceMemberImpl extends ASTWrapperPsiElement implements D ...@@ -17,8 +17,12 @@ public class DjinniInterfaceMemberImpl extends ASTWrapperPsiElement implements D
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitInterfaceMember(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitInterfaceMember(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniInterfaceTypeVariantImpl extends ASTWrapperPsiElement impleme ...@@ -17,8 +17,12 @@ public class DjinniInterfaceTypeVariantImpl extends ASTWrapperPsiElement impleme
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitInterfaceTypeVariant(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitInterfaceTypeVariant(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
...@@ -28,4 +32,10 @@ public class DjinniInterfaceTypeVariantImpl extends ASTWrapperPsiElement impleme ...@@ -28,4 +32,10 @@ public class DjinniInterfaceTypeVariantImpl extends ASTWrapperPsiElement impleme
return PsiTreeUtil.getChildrenOfTypeAsList(this, DjinniGenerator.class); return PsiTreeUtil.getChildrenOfTypeAsList(this, DjinniGenerator.class);
} }
@Override
@NotNull
public PsiElement getInterface() {
return findNotNullChildByType(INTERFACE);
}
} }
...@@ -17,8 +17,12 @@ public class DjinniPredefinedTypeImpl extends ASTWrapperPsiElement implements Dj ...@@ -17,8 +17,12 @@ public class DjinniPredefinedTypeImpl extends ASTWrapperPsiElement implements Dj
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitPredefinedType(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitPredefinedType(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniRecordMemberImpl extends ASTWrapperPsiElement implements Djin ...@@ -17,8 +17,12 @@ public class DjinniRecordMemberImpl extends ASTWrapperPsiElement implements Djin
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitRecordMember(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitRecordMember(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniRecordMemberVariableImpl extends ASTWrapperPsiElement impleme ...@@ -17,8 +17,12 @@ public class DjinniRecordMemberVariableImpl extends ASTWrapperPsiElement impleme
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitRecordMemberVariable(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitRecordMemberVariable(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -17,8 +17,12 @@ public class DjinniRecordTypeVariantImpl extends ASTWrapperPsiElement implements ...@@ -17,8 +17,12 @@ public class DjinniRecordTypeVariantImpl extends ASTWrapperPsiElement implements
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitRecordTypeVariant(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitRecordTypeVariant(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
...@@ -28,4 +32,10 @@ public class DjinniRecordTypeVariantImpl extends ASTWrapperPsiElement implements ...@@ -28,4 +32,10 @@ public class DjinniRecordTypeVariantImpl extends ASTWrapperPsiElement implements
return PsiTreeUtil.getChildrenOfTypeAsList(this, DjinniGenerator.class); return PsiTreeUtil.getChildrenOfTypeAsList(this, DjinniGenerator.class);
} }
@Override
@NotNull
public PsiElement getRecord() {
return findNotNullChildByType(RECORD);
}
} }
...@@ -18,8 +18,12 @@ public class DjinniTypeDefinitionImpl extends DjinniNamedElementImpl implements ...@@ -18,8 +18,12 @@ public class DjinniTypeDefinitionImpl extends DjinniNamedElementImpl implements
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitTypeDefinition(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitTypeDefinition(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -16,8 +16,12 @@ public class DjinniTypeReferenceImpl extends DjinniReferenceImpl implements Djin ...@@ -16,8 +16,12 @@ public class DjinniTypeReferenceImpl extends DjinniReferenceImpl implements Djin
super(node); super(node);
} }
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitTypeReference(this);
}
public void accept(@NotNull PsiElementVisitor visitor) { public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitTypeReference(this); if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor); else super.accept(visitor);
} }
......
...@@ -46,6 +46,15 @@ ...@@ -46,6 +46,15 @@
space="regexp:\s+" space="regexp:\s+"
comment="regexp:#.*" comment="regexp:#.*"
enum="enum"
record="record"
eq_keyword="eq"
ord="ord"
interface="interface"
static="static"
const="const"
extern="extern"
import="import"
string_literal="regexp:('([^'\\]|\\.)*'|\"([^\"\\]|\\\"|\\\'|\\)*\")" string_literal="regexp:('([^'\\]|\\.)*'|\"([^\"\\]|\\\"|\\\'|\\)*\")"
number_literal="regexp:-?(\d+(\.\d*)?)|(\.\d+)" number_literal="regexp:-?(\d+(\.\d*)?)|(\.\d+)"
identifier="regexp:\p{Alpha}\w*" identifier="regexp:\p{Alpha}\w*"
...@@ -72,7 +81,7 @@ generator ::= (PLUS 'c') | (PLUS 'j') | (PLUS 'o') ...@@ -72,7 +81,7 @@ generator ::= (PLUS 'c') | (PLUS 'j') | (PLUS 'o')
private enumDescription ::= enumTypeVariant LEFT_BLOCK_BRACE enumMember* RIGHT_BLOCK_BRACE private enumDescription ::= enumTypeVariant LEFT_BLOCK_BRACE enumMember* RIGHT_BLOCK_BRACE
enumTypeVariant ::= 'enum' enumTypeVariant ::= enum
enumMember ::= enumValue SEMICOLON enumMember ::= enumValue SEMICOLON
...@@ -86,11 +95,11 @@ enumValue ::= identifier { ...@@ -86,11 +95,11 @@ enumValue ::= identifier {
private recordDescription ::= recordTypeVariant LEFT_BLOCK_BRACE recordMember* RIGHT_BLOCK_BRACE ['deriving' LEFT_PARAM_BRACE derivingParamList RIGHT_PARAM_BRACE] private recordDescription ::= recordTypeVariant LEFT_BLOCK_BRACE recordMember* RIGHT_BLOCK_BRACE ['deriving' LEFT_PARAM_BRACE derivingParamList RIGHT_PARAM_BRACE]
recordTypeVariant ::= 'record' generator* recordTypeVariant ::= record generator*
derivingParamList ::= (derivingParam ',' derivingParamList) | derivingParam derivingParamList ::= (derivingParam ',' derivingParamList) | derivingParam
derivingParam ::= 'eq' | 'ord' derivingParam ::= eq_keyword | ord
recordMember ::= constMember | recordMemberVariable recordMember ::= constMember | recordMemberVariable
...@@ -100,11 +109,11 @@ recordMemberVariable ::= identifier COLON typeReference SEMICOLON ...@@ -100,11 +109,11 @@ recordMemberVariable ::= identifier COLON typeReference SEMICOLON
private interfaceDescription ::= interfaceTypeVariant LEFT_BLOCK_BRACE interfaceMember* RIGHT_BLOCK_BRACE private interfaceDescription ::= interfaceTypeVariant LEFT_BLOCK_BRACE interfaceMember* RIGHT_BLOCK_BRACE
interfaceTypeVariant ::= 'interface' generator* interfaceTypeVariant ::= interface generator*
interfaceMember ::= constMember | interfaceMemberFunction interfaceMember ::= constMember | interfaceMemberFunction
interfaceMemberFunction ::= ['static'] identifier LEFT_PARAM_BRACE interfaceFunctionParamList? RIGHT_PARAM_BRACE [COLON typeReference] SEMICOLON interfaceMemberFunction ::= [static] identifier LEFT_PARAM_BRACE interfaceFunctionParamList? RIGHT_PARAM_BRACE [COLON typeReference] SEMICOLON
interfaceFunctionParamList ::= (interfaceFunctionParam ',' interfaceFunctionParamList) | interfaceFunctionParam interfaceFunctionParamList ::= (interfaceFunctionParam ',' interfaceFunctionParamList) | interfaceFunctionParam
...@@ -134,7 +143,7 @@ genericBasicTypeDualParameter ::= map LEFT_GENERICS_BRACE typeReference LIST_SEP ...@@ -134,7 +143,7 @@ genericBasicTypeDualParameter ::= map LEFT_GENERICS_BRACE typeReference LIST_SEP
// //
// const definitions // const definitions
// //
constMember ::= 'const' constNamedValue COLON typeReference EQ constValue SEMICOLON constMember ::= const constNamedValue COLON typeReference EQ constValue SEMICOLON
constNamedValue ::= identifier { constNamedValue ::= identifier {
mixin="com.dropbox.djinni.ideaplugin.psi.impl.DjinniReferenceImpl" mixin="com.dropbox.djinni.ideaplugin.psi.impl.DjinniReferenceImpl"
...@@ -159,7 +168,7 @@ constRecordMemberElement ::= identifier EQ constValue ...@@ -159,7 +168,7 @@ constRecordMemberElement ::= identifier EQ constValue
// //
// import // import
// //
importStatement ::= AT'import' string_literal { importStatement ::= AT import string_literal {
mixin="com.dropbox.djinni.ideaplugin.psi.impl.DjinniImportStatementBaseImpl" mixin="com.dropbox.djinni.ideaplugin.psi.impl.DjinniImportStatementBaseImpl"
implements="com.intellij.psi.PsiNamedElement" implements="com.intellij.psi.PsiNamedElement"
methods=[getName setName getRangeOfPath getPath] methods=[getName setName getRangeOfPath getPath]
...@@ -168,7 +177,7 @@ importStatement ::= AT'import' string_literal { ...@@ -168,7 +177,7 @@ importStatement ::= AT'import' string_literal {
// //
// extern // extern
// //
externStatement ::= AT'extern' string_literal { externStatement ::= AT extern string_literal {
mixin="com.dropbox.djinni.ideaplugin.psi.impl.DjinniImportStatementBaseImpl" mixin="com.dropbox.djinni.ideaplugin.psi.impl.DjinniImportStatementBaseImpl"
implements="com.intellij.psi.PsiNamedElement" implements="com.intellij.psi.PsiNamedElement"
methods=[getName setName getRangeOfPath getPath] methods=[getName setName getRangeOfPath getPath]
......
package com.dropbox.djinni.ideaplugin;
import com.dropbox.djinni.ideaplugin.psi.DjinniTypes;
import com.intellij.lang.BracePair;
import com.intellij.lang.PairedBraceMatcher;
import com.intellij.psi.PsiFile;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class DjinniBraceMatcher implements PairedBraceMatcher {
public static @NotNull
BracePair[] PAIRS = new BracePair[]{
new BracePair(DjinniTypes.LEFT_BLOCK_BRACE, DjinniTypes.RIGHT_BLOCK_BRACE, false),
new BracePair(DjinniTypes.LEFT_GENERICS_BRACE, DjinniTypes.RIGHT_GENERICS_BRACE, false),
new BracePair(DjinniTypes.LEFT_PARAM_BRACE, DjinniTypes.RIGHT_PARAM_BRACE, false),
};
@NotNull
@Override
public BracePair[] getPairs() {
return PAIRS;
}
@Override
public boolean isPairedBracesAllowedBeforeType(@NotNull IElementType lbraceType, @Nullable IElementType contextType) {
return true;
}
@Override
public int getCodeConstructStart(PsiFile file, int openingBraceOffset) {
return openingBraceOffset;
}
}
...@@ -33,6 +33,7 @@ public class DjinniColorSettingsPage implements ColorSettingsPage { ...@@ -33,6 +33,7 @@ public class DjinniColorSettingsPage implements ColorSettingsPage {
private static final AttributesDescriptor[] DESCRIPTORS = new AttributesDescriptor[] { private static final AttributesDescriptor[] DESCRIPTORS = new AttributesDescriptor[] {
new AttributesDescriptor("Comment", DjinniSyntaxHighlighter.COMMENT), new AttributesDescriptor("Comment", DjinniSyntaxHighlighter.COMMENT),
new AttributesDescriptor("Identifier", DjinniSyntaxHighlighter.IDENTIFIER), new AttributesDescriptor("Identifier", DjinniSyntaxHighlighter.IDENTIFIER),
new AttributesDescriptor("Keywords", DjinniSyntaxHighlighter.KEYWORDS),
new AttributesDescriptor("String literal", DjinniSyntaxHighlighter.STRING_LITERAL), new AttributesDescriptor("String literal", DjinniSyntaxHighlighter.STRING_LITERAL),
new AttributesDescriptor("Number literal", DjinniSyntaxHighlighter.NUMBER_LITERAL), new AttributesDescriptor("Number literal", DjinniSyntaxHighlighter.NUMBER_LITERAL),
}; };
......
...@@ -23,6 +23,7 @@ import com.intellij.openapi.editor.colors.TextAttributesKey; ...@@ -23,6 +23,7 @@ import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.fileTypes.SyntaxHighlighterBase; import com.intellij.openapi.fileTypes.SyntaxHighlighterBase;
import com.intellij.psi.TokenType; import com.intellij.psi.TokenType;
import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.TokenSet;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import static com.intellij.openapi.editor.colors.TextAttributesKey.createTextAttributesKey; import static com.intellij.openapi.editor.colors.TextAttributesKey.createTextAttributesKey;
...@@ -31,14 +32,25 @@ import static com.intellij.openapi.editor.colors.TextAttributesKey.createTextAtt ...@@ -31,14 +32,25 @@ import static com.intellij.openapi.editor.colors.TextAttributesKey.createTextAtt
* Created by jaetzold on 7/23/15. * Created by jaetzold on 7/23/15.
*/ */
public class DjinniSyntaxHighlighter extends SyntaxHighlighterBase { public class DjinniSyntaxHighlighter extends SyntaxHighlighterBase {
public static TokenSet KEYWORD_TOKENS = TokenSet.create(DjinniTypes.EQ_KEYWORD,
DjinniTypes.ENUM,
DjinniTypes.INTERFACE,
DjinniTypes.CONST,
DjinniTypes.EXTERN,
DjinniTypes.IMPORT,
DjinniTypes.ORD,
DjinniTypes.RECORD,
DjinniTypes.STATIC);
public static final TextAttributesKey STRING_LITERAL = createTextAttributesKey("DJINNI_STRING_LITERAL", DefaultLanguageHighlighterColors.STRING); public static final TextAttributesKey STRING_LITERAL = createTextAttributesKey("DJINNI_STRING_LITERAL", DefaultLanguageHighlighterColors.STRING);
public static final TextAttributesKey KEYWORDS = createTextAttributesKey("DJINNI_KEYWORDS", DefaultLanguageHighlighterColors.KEYWORD);
public static final TextAttributesKey NUMBER_LITERAL = createTextAttributesKey("DJINNI_NUMBER_LITERAL", DefaultLanguageHighlighterColors.NUMBER); public static final TextAttributesKey NUMBER_LITERAL = createTextAttributesKey("DJINNI_NUMBER_LITERAL", DefaultLanguageHighlighterColors.NUMBER);
public static final TextAttributesKey IDENTIFIER = createTextAttributesKey("DJINNI_IDENTIFIER", DefaultLanguageHighlighterColors.IDENTIFIER); public static final TextAttributesKey IDENTIFIER = createTextAttributesKey("DJINNI_IDENTIFIER", DefaultLanguageHighlighterColors.IDENTIFIER);
public static final TextAttributesKey COMMENT = createTextAttributesKey("DJINNI_COMMENT", DefaultLanguageHighlighterColors.LINE_COMMENT); public static final TextAttributesKey COMMENT = createTextAttributesKey("DJINNI_COMMENT", DefaultLanguageHighlighterColors.LINE_COMMENT);
public static final TextAttributesKey BAD_CHARACTER = createTextAttributesKey("DJINNI_BAD_CHARACTER", HighlighterColors.BAD_CHARACTER); public static final TextAttributesKey BAD_CHARACTER = createTextAttributesKey("DJINNI_BAD_CHARACTER", HighlighterColors.BAD_CHARACTER);
private static final TextAttributesKey[] STRING_LITERAL_KEYS = new TextAttributesKey[]{STRING_LITERAL}; private static final TextAttributesKey[] STRING_LITERAL_KEYS = new TextAttributesKey[]{STRING_LITERAL};
private static final TextAttributesKey[] KEYWORD_KEYS = new TextAttributesKey[]{KEYWORDS};
private static final TextAttributesKey[] NUMBER_LITERAL_KEYS = new TextAttributesKey[]{NUMBER_LITERAL}; private static final TextAttributesKey[] NUMBER_LITERAL_KEYS = new TextAttributesKey[]{NUMBER_LITERAL};
private static final TextAttributesKey[] IDENTIFIER_KEYS = new TextAttributesKey[]{IDENTIFIER}; private static final TextAttributesKey[] IDENTIFIER_KEYS = new TextAttributesKey[]{IDENTIFIER};
private static final TextAttributesKey[] COMMENT_KEYS = new TextAttributesKey[]{COMMENT}; private static final TextAttributesKey[] COMMENT_KEYS = new TextAttributesKey[]{COMMENT};
...@@ -64,6 +76,8 @@ public class DjinniSyntaxHighlighter extends SyntaxHighlighterBase { ...@@ -64,6 +76,8 @@ public class DjinniSyntaxHighlighter extends SyntaxHighlighterBase {
return COMMENT_KEYS; return COMMENT_KEYS;
} else if (tokenType.equals(TokenType.BAD_CHARACTER)) { } else if (tokenType.equals(TokenType.BAD_CHARACTER)) {
return BAD_CHAR_KEYS; return BAD_CHAR_KEYS;
} else if (KEYWORD_TOKENS.contains(tokenType)) {
return KEYWORD_KEYS;
} else { } else {
return EMPTY_KEYS; return EMPTY_KEYS;
} }
......
...@@ -17,11 +17,9 @@ package com.dropbox.djinni.ideaplugin; ...@@ -17,11 +17,9 @@ package com.dropbox.djinni.ideaplugin;
import com.dropbox.djinni.ideaplugin.psi.*; import com.dropbox.djinni.ideaplugin.psi.*;
import com.dropbox.djinni.ideaplugin.psi.impl.DjinniPsiImplUtil; import com.dropbox.djinni.ideaplugin.psi.impl.DjinniPsiImplUtil;
import com.intellij.lang.Language;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*; import com.intellij.psi.*;
import com.intellij.psi.impl.PsiManagerImpl;
import com.intellij.psi.search.FileTypeIndex; import com.intellij.psi.search.FileTypeIndex;
import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiTreeUtil;
...@@ -30,8 +28,6 @@ import org.jetbrains.annotations.NotNull; ...@@ -30,8 +28,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.util.*; import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** /**
* Created by jaetzold on 7/27/15. * Created by jaetzold on 7/27/15.
...@@ -123,7 +119,7 @@ public class DjinniUtil { ...@@ -123,7 +119,7 @@ public class DjinniUtil {
} }
@NotNull @NotNull
public static List<PsiElement> findAllExternalTypes(Project project, PsiElement visibilityContext) { public static List<PsiElement> findAllExternalTypes(Project project, @Nullable PsiElement visibilityContext) {
List<PsiElement> result = new ArrayList<PsiElement>(); List<PsiElement> result = new ArrayList<PsiElement>();
List<PsiFile> allExternalFiles = findAllExternalFiles(project, visibilityContext); List<PsiFile> allExternalFiles = findAllExternalFiles(project, visibilityContext);
...@@ -273,7 +269,7 @@ public class DjinniUtil { ...@@ -273,7 +269,7 @@ public class DjinniUtil {
} }
@NotNull @NotNull
public static List<DjinniFile> findAllDjinniFiles(Project project, PsiElement visibilityContext) { public static List<DjinniFile> findAllDjinniFiles(Project project, @Nullable PsiElement visibilityContext) {
List<DjinniFile> result = new ArrayList<DjinniFile>(); List<DjinniFile> result = new ArrayList<DjinniFile>();
if (visibilityContext == null) { if (visibilityContext == null) {
...@@ -315,7 +311,7 @@ public class DjinniUtil { ...@@ -315,7 +311,7 @@ public class DjinniUtil {
} }
@NotNull @NotNull
public static List<PsiFile> findAllExternalFiles(Project project, @NotNull PsiElement visibilityContext) { public static List<PsiFile> findAllExternalFiles(Project project, @Nullable PsiElement visibilityContext) {
List<PsiFile> result = new ArrayList<PsiFile>(); List<PsiFile> result = new ArrayList<PsiFile>();
List<DjinniFile> visibleDjinniFiles = findAllDjinniFiles(project, visibilityContext); List<DjinniFile> visibleDjinniFiles = findAllDjinniFiles(project, visibilityContext);
......
...@@ -63,6 +63,12 @@ TEXT=[a-zA-Z_0-9]+ ...@@ -63,6 +63,12 @@ TEXT=[a-zA-Z_0-9]+
"set" { return SET; } "set" { return SET; }
"optional" { return OPTIONAL; } "optional" { return OPTIONAL; }
"map" { return MAP; } "map" { return MAP; }
"enum" { return ENUM; }
"record" { return RECORD; }
"eq" { return EQ_KEYWORD; }
"ord" { return ORD; }
"interface" { return INTERFACE; }
"static" { return STATIC; }
{SPACE} { return SPACE; } {SPACE} { return SPACE; }
{COMMENT} { return COMMENT; } {COMMENT} { return COMMENT; }
......
...@@ -20,6 +20,9 @@ import com.intellij.psi.tree.IElementType; ...@@ -20,6 +20,9 @@ import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.Arrays;
import java.util.List;
/** /**
* Created by jaetzold on 7/20/15. * Created by jaetzold on 7/20/15.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment