Giter VIP home page Giter VIP logo

intellij-solidity's Introduction

Solidity plugin for IntelliJ

Build Status JetBrains plugins

logo 256

Features

  • Syntax highlighting

  • Code completion

  • File templates

  • Goto declaration

  • Find usages

  • Code formatting

Supporting the plugin

You can support the development by sponsoring the plugin on Github ❤️, supporting the plugin with crypto through the Gitcoin grant, or even simply clicking ★ on GitHub and rating it on the plugin page.

Reporting an issue

Please attach the screenshot for every issue if possible. It will make the issue much clearer and easier to understand.

Build

./gradlew buildPlugin

Run

./gradlew runIdea

Discuss

Please check out the new discussions section.

Contribute

Contributions are always welcome!

If you are only starting your way as an Intellij-Plugin developer, feel free to contact us, and we’ll help you with the IDE setup and guide you through the code so that you will be able to make your first contribution and fix that annoying bug that drives you nuts! And then if you are keen, you may dive deeper into the wonderful world of lexers, parsers, types, refactorings and code analysers.

For development documentation, see DEVELOPING.

intellij-solidity's People

Contributors

0v1se avatar apottere avatar arshankhanifar avatar carter-ya avatar cedricwalter avatar dukei avatar dyzz avatar evgenynacu avatar fooock avatar gitter-badger avatar ice1000 avatar idrabenia avatar jonahcui avatar logvinovleon avatar mbolotov avatar moodysalem avatar patitonar avatar pironmind avatar serceman avatar spacelord47 avatar standstaff avatar t-kameyama avatar ualtinok avatar vlad-khramov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

intellij-solidity's Issues

KotlinNullPointerException: SolFunctionDefMixin.getParameters(mixins.kt:76)

https://sentry.io/intellij-solidity/intellij-solidity/issues/437515740/

KotlinNullPointerException: None
    at me.serce.solidity.lang.psi.impl.SolFunctionDefMixin.getParameters(mixins.kt:76)
    at me.serce.solidity.lang.resolve.SolResolver.lexicalDeclarations(engine.kt:140)
    at me.serce.solidity.lang.resolve.SolResolver.access$lexicalDeclarations(engine.kt:11)
    at me.serce.solidity.lang.resolve.SolResolver$lexicalDeclRec$2.invoke(engine.kt:116)
    at me.serce.solidity.lang.resolve.SolResolver$lexicalDeclRec$2.invoke(engine.kt:11)
...
(48 additional frame(s) were not displayed)

null

New -> Smart contract causes out-of-memory error

Just installed the latest version of this plugin into the latest IntelliJ release and after trying the New File > Smart Contract from the context menu, the system seemed to hang and then eventually showed an out-of-memory error panel.

Scientific notation

Please add support for scientific notation:
uint constant CAP = 14e6; //14000000

Solidity supports it

Meta: Project Roadmap and Ideas

There are many useful things we could start with here:
http://www.jetbrains.org/intellij/sdk/docs/tutorials/custom_language_support_tutorial.html

In no particular order:

  • Implement Formatter (code auto-formatting)
  • Implement Annotators (see here for ideas)
  • Implement Line Marker providers for usage and definitions of methods and variables.
  • Implement missing Completion Contributors (may need better static analysis for struct fields)
  • Implement Reference Contributors
  • Implement Find Usages Provider
  • Implement Folding Builder
  • Implement Go to Symbol Contributor
  • Implement Structure View Factory
  • Implement Commenter
  • Implement Quick Fixes (many annotations could have easy quick fixes)

Example Project Request

I havent used much of intellij so I am not too familiar with the project setup,

Just wondering if someone could create an example github project while using this plugin, so I can see they way it is done :)

NoSuchElementException: SolFunctionCallReference#multiResolve:69

https://sentry.io/intellij-solidity/intellij-solidity/issues/435961629/

NoSuchElementException: Sequence contains no element matching the predicate.
    at me.serce.solidity.lang.resolve.ref.SolFunctionCallReference.multiResolve(SolUserDefinedTypeNameReference.kt:69)
    at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
    at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
    at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
    at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolve$0(ResolveCache.java:145)
...
(30 additional frame(s) were not displayed)

Sequence contains no element matching the predicate.

Accept new constructor() syntax

The nightly versions of the Solidity compiler now use the constructor(args) instead of function ContractName(args) syntax. I tried to add this in intellij-solidity myself but I don't have enough time to get my head around how the parser generators work.

Unable to set indentation size

In Editor -> Code Style -> Solidity, change the indent size has no effect (it's stuck at 2). Changing the number there doesn't register as a change (i.e. "Apply" isn't enabled, and the section isn't highlighted in the prefs navigation).

Code Generation?

Is there a mechanism in this plugin to generate code from the Abstract Syntax Tree created by the parser?

KNPE: SolFunctionDefMixin#getParameters

https://sentry.io/intellij-solidity/intellij-solidity/issues/443091738/

KotlinNullPointerException: None
    at me.serce.solidity.lang.psi.impl.SolFunctionDefMixin.getParameters(mixins.kt:76)
    at me.serce.solidity.lang.resolve.SolResolver.lexicalDeclarations(engine.kt:140)
    at me.serce.solidity.lang.resolve.SolResolver.access$lexicalDeclarations(engine.kt:11)
    at me.serce.solidity.lang.resolve.SolResolver$lexicalDeclRec$2.invoke(engine.kt:116)
    at me.serce.solidity.lang.resolve.SolResolver$lexicalDeclRec$2.invoke(engine.kt:11)
...
(39 additional frame(s) were not displayed)

null

Gradle build fails to compile ui forms with a kotlin backend class

It seems gradle build can't process a GUI form using a kotlin class.
It works okay with a java class.

To reproduce:
Run gradle buildPlugin
Output:

Task :classes
[ant:instrumentIdeaExtensions] /Users/mbolotov/work/intellij-solidity/src/main/kotlin/me/serce/solidity/ide/run/SolidityConfigurableEditor.form: Class to bind does not exist: me.serce.solidity.ide.run.ui.SolidityConfigurableEditorPanel
[ant:instrumentIdeaExtensions] /Users/mbolotov/work/intellij-solidity/src/main/kotlin/me/serce/solidity/ide/settings/SoliditySettingsConfigurable.form: Class to bind does not exist: me.serce.solidity.ide.settings.SolidityConfigurablePanel

Can't open any .sol files for editing if I'm using the intellij-solidity plugin.

I'm using Intellij 14.1.4, and if I use the plugin, I can't open ANY .sol files, the editor just throws exceptions. The files I'm trying to open are just from the truffle init examples (metacoin, etc)

Exception:

com.intellij.lang.parser.GeneratedParserUtilBase.enter_section_(Lcom/intellij/lang/PsiBuilder;II)Lcom/intellij/lang/PsiBuilder$Marker;
java.lang.NoSuchMethodError: com.intellij.lang.parser.GeneratedParserUtilBase.enter_section_(Lcom/intellij/lang/PsiBuilder;II)Lcom/intellij/lang/PsiBuilder$Marker;
at me.serce.solidity.SolidityParser.PragmaPart(SolidityParser.java:1551)
at me.serce.solidity.SolidityParser.PragmaDirective(SolidityParser.java:1540)
at me.serce.solidity.SolidityParser.SourceUnit_0(SolidityParser.java:1694)
at me.serce.solidity.SolidityParser.SourceUnit(SolidityParser.java:1682)
at me.serce.solidity.SolidityParser.parse_root_(SolidityParser.java:186)
at me.serce.solidity.SolidityParser.parseLight(SolidityParser.java:180)
at me.serce.solidity.SolidityParser.parse(SolidityParser.java:18)
at com.intellij.psi.tree.ILazyParseableElementType.doParseContents(ILazyParseableElementType.java:64)
at com.intellij.psi.tree.IFileElementType.parseContents(IFileElementType.java:43)
at com.intellij.psi.impl.source.tree.LazyParseableElement.f(LazyParseableElement.java:172)
at com.intellij.psi.impl.source.tree.LazyParseableElement.getFirstChildNode(LazyParseableElement.java:212)
at com.intellij.psi.impl.source.tree.CompositeElement.countChildren(CompositeElement.java:512)
at com.intellij.psi.impl.source.tree.CompositeElement.getChildren(CompositeElement.java:457)
at me.serce.solidity.ide.SolidityFoldingBuilder$Companion.collectDescriptorsRecursively(folding.kt:45)
at me.serce.solidity.ide.SolidityFoldingBuilder$Companion.access$collectDescriptorsRecursively(folding.kt:33)
at me.serce.solidity.ide.SolidityFoldingBuilder.buildFoldRegions(folding.kt:15)
at com.intellij.lang.folding.LanguageFolding.buildFoldingDescriptors(LanguageFolding.java:90)
at com.intellij.codeInsight.folding.impl.FoldingUpdate.a(FoldingUpdate.java:265)
at com.intellij.codeInsight.folding.impl.FoldingUpdate.getFoldingsFor(FoldingUpdate.java:250)
at com.intellij.codeInsight.folding.impl.CodeFoldingManagerImpl.buildInitialFoldings(CodeFoldingManagerImpl.java:232)
at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorProvider.createEditorAsync(PsiAwareTextEditorProvider.java:63)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$11.compute(FileEditorManagerImpl.java:823)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$11.compute(FileEditorManagerImpl.java:816)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:884)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileImpl4(FileEditorManagerImpl.java:816)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileImpl3(FileEditorManagerImpl.java:776)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$9.run(FileEditorManagerImpl.java:756)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:117)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:99)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:85)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileImpl2(FileEditorManagerImpl.java:753)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileWithProviders(FileEditorManagerImpl.java:694)
at com.intellij.openapi.fileEditor.ex.FileEditorManagerEx.openFile(FileEditorManagerEx.java:146)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$15.run(FileEditorManagerImpl.java:1104)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:124)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:99)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:85)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openEditor(FileEditorManagerImpl.java:1100)
at com.intellij.openapi.fileEditor.OpenFileDescriptor.navigateInAnyFileEditor(OpenFileDescriptor.java:145)
at com.intellij.openapi.fileEditor.OpenFileDescriptor.navigateInEditor(OpenFileDescriptor.java:131)
at com.intellij.openapi.fileEditor.OpenFileDescriptor.navigateInEditorOrNativeApp(OpenFileDescriptor.java:127)
at com.intellij.openapi.fileEditor.OpenFileDescriptor.navigate(OpenFileDescriptor.java:114)
at com.intellij.psi.impl.source.PsiFileImpl.navigate(PsiFileImpl.java:941)
at com.intellij.codeInsight.navigation.NavigationUtil.openFileWithPsiElement(NavigationUtil.java:170)
at com.intellij.ide.projectView.impl.nodes.AbstractPsiBasedNode.navigate(AbstractPsiBasedNode.java:207)
at com.intellij.ide.projectView.impl.nodes.AbstractPsiBasedNode.navigate(AbstractPsiBasedNode.java:217)
at com.intellij.ide.projectView.impl.nodes.PsiFileNode.navigate(PsiFileNode.java:132)
at com.intellij.util.OpenSourceUtil.navigate(OpenSourceUtil.java:53)
at com.intellij.util.OpenSourceUtil.openSourcesFrom(OpenSourceUtil.java:31)
at com.intellij.util.EditSourceOnDoubleClickHandler$TreeMouseListener.processDoubleClick(EditSourceOnDoubleClickHandler.java:130)
at com.intellij.util.EditSourceOnDoubleClickHandler$TreeMouseListener.onDoubleClick(EditSourceOnDoubleClickHandler.java:122)
at com.intellij.ui.DoubleClickListener.onClick(DoubleClickListener.java:30)
at com.intellij.ui.ClickListener$1.mouseReleased(ClickListener.java:73)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6525)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at com.intellij.ui.treeStructure.Tree.processMouseEvent(Tree.java:421)
at com.intellij.ide.dnd.aware.DnDAwareTree.processMouseEvent(DnDAwareTree.java:53)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:734)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:565)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

solidity plugin installed into a non java IDE throws an exception on creating a run configuration

A non java IDE does not provide CommonJavaRunConfigurationParameters class required by the run configuration functionality

To reproduce (I used PyCharm):
Call context menu on a solidity function element.

IDE shows an exception thrown:

update failed for AnAction(com.intellij.execution.actions.RunContextAction) with ID=RunClass: com/intellij/execution/CommonJavaRunConfigurationParameters
java.lang.NoClassDefFoundError: com/intellij/execution/CommonJavaRunConfigurationParameters
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.lang.ClassLoader.defineClass(ClassLoader.java:642)
at com.intellij.util.lang.UrlClassLoader._defineClass(UrlClassLoader.java:278)
at com.intellij.util.lang.UrlClassLoader.defineClass(UrlClassLoader.java:274)
at com.intellij.util.lang.UrlClassLoader._findClass(UrlClassLoader.java:243)
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClassInsideSelf(PluginClassLoader.java:142)
at com.intellij.ide.plugins.cl.PluginClassLoader.tryLoadingClass(PluginClassLoader.java:74)
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at me.serce.solidity.ide.run.SolidityConfigurationType$configurationFactory$1.createTemplateConfiguration(SolidityConfigurationType.kt:19)
at com.intellij.execution.configurations.ConfigurationFactory.createTemplateConfiguration(ConfigurationFactory.java:64)
at com.intellij.execution.impl.RunManagerImpl.createTemplateSettings$intellij_platform_lang_impl(RunManagerImpl.kt:239)
at com.intellij.execution.impl.RunManagerImpl.getConfigurationTemplate(RunManagerImpl.kt:226)
at com.intellij.execution.impl.RunManagerImpl.createConfiguration(RunManagerImpl.kt:153)
at com.intellij.execution.RunManager.createRunConfiguration(RunManager.kt:148)
at com.intellij.execution.actions.RunConfigurationProducer.cloneTemplateConfigurationStatic(RunConfigurationProducer.java:225)
at com.intellij.execution.actions.RunConfigurationProducer.cloneTemplateConfiguration(RunConfigurationProducer.java:215)
at com.intellij.execution.actions.RunConfigurationProducer.createConfigurationFromContext(RunConfigurationProducer.java:74)
at com.intellij.execution.actions.RunConfigurationProducer.findOrCreateConfigurationFromContext(RunConfigurationProducer.java:166)
at com.intellij.execution.actions.PreferredProducerFind.getConfigurationsFromContext(PreferredProducerFind.java:112)
at com.intellij.execution.actions.PreferredProducerFind.findConfigurationFromContext(PreferredProducerFind.java:137)
at com.intellij.execution.actions.PreferredProducerFind.createConfiguration(PreferredProducerFind.java:44)
at com.intellij.execution.actions.ConfigurationContext.createConfiguration(ConfigurationContext.java:149)
at com.intellij.execution.actions.ConfigurationContext.getConfiguration(ConfigurationContext.java:140)
at com.intellij.execution.actions.BaseRunConfigurationAction.update(BaseRunConfigurationAction.java:187)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareUpdate(ActionUtil.java:136)
at com.intellij.openapi.actionSystem.impl.Utils.doUpdate(Utils.java:259)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:202)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:153)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:228)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:153)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:228)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:153)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:228)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:153)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:228)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:153)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:228)
at com.intellij.openapi.actionSystem.impl.Utils.fillMenu(Utils.java:365)
at com.intellij.openapi.actionSystem.impl.ActionPopupMenuImpl$MyMenu.show(ActionPopupMenuImpl.java:100)
at com.intellij.openapi.editor.impl.EditorImpl.invokePopupIfNeeded(EditorImpl.java:4560)
at com.intellij.openapi.editor.impl.EditorImpl.access$9500(EditorImpl.java:123)
at com.intellij.openapi.editor.impl.EditorImpl$MyMouseAdapter.runMousePressedCommand(EditorImpl.java:3603)
at com.intellij.openapi.editor.impl.EditorImpl$MyMouseAdapter.mousePressed(EditorImpl.java:3526)
at java.awt.Component.processMouseEvent(Component.java:6538)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3325)
at java.awt.Component.processEvent(Component.java:6306)
at java.awt.Container.processEvent(Container.java:2237)
at java.awt.Component.dispatchEventImpl(Component.java:4897)
at java.awt.Container.dispatchEventImpl(Container.java:2295)
at java.awt.Component.dispatchEvent(Component.java:4719)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4523)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
at java.awt.Container.dispatchEventImpl(Container.java:2281)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4719)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
at java.awt.EventQueue.access$500(EventQueue.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:715)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:737)
at java.awt.EventQueue$4.run(EventQueue.java:735)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:837)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:762)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:434)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ClassNotFoundException: com.intellij.execution.CommonJavaRunConfigurationParameters PluginClassLoader[me.serce.solidity, 2.0.6-SNAPSHOT] com.intellij.ide.plugins.cl.PluginClassLoader@7717e16b
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:63)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 79 more

Import file hint doesn't work as expected

Import file hint pops up even though a file is properly imported. The problem occurs when I use multiple inheritances and I define a structure in the root contract. For instance:

contract A {
  struct MyStruct
}
import "A.sol";

contract B is A {
}
import "B.sol";

contract C is B {
   MyStruct A; //My struct is correctly imported as its part of B
}

In contract C MyStruct is correctly imported. Even though plugin prompts me to import A contract. Moreover, even if I do that, it keeps prompting me about that.

Exception: Sequence contains no element matching the predicate.

I regular receive error message:

Sequence contains no element matching the predicate.
java.util.NoSuchElementException: Sequence contains no element matching the predicate.
at me.serce.solidity.lang.resolve.ref.SolFunctionCallReference.multiResolve(SolUserDefinedTypeNameReference.kt:69)
at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolve$0(ResolveCache.java:145)
at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:144)
at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:175)
at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:167)
at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:20)
at com.intellij.psi.PsiPolyVariantReferenceBase.isReferenceTo(PsiPolyVariantReferenceBase.java:52)
at com.intellij.psi.search.SingleTargetRequestResultProcessor.processTextOccurrence(SingleTargetRequestResultProcessor.java:52)
at com.intellij.psi.impl.search.PsiSearchHelperImpl$3.lambda$execute$0(PsiSearchHelperImpl.java:762)
at com.intellij.psi.impl.search.LowLevelSearchUtil.processTreeUp(LowLevelSearchUtil.java:139)
at com.intellij.psi.impl.search.LowLevelSearchUtil.processElementsAtOffsets(LowLevelSearchUtil.java:226)
at com.intellij.psi.impl.search.PsiSearchHelperImpl$3.execute(PsiSearchHelperImpl.java:758)
at com.intellij.psi.impl.search.PsiSearchHelperImpl$2.processInReadAction(PsiSearchHelperImpl.java:247)
at com.intellij.psi.impl.search.PsiSearchHelperImpl$2.processInReadAction(PsiSearchHelperImpl.java:238)
at com.intellij.openapi.application.ReadActionProcessor.lambda$process$0(ReadActionProcessor.java:28)
at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:47)
at com.intellij.openapi.application.ReadActionProcessor.process(ReadActionProcessor.java:28)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.lambda$processVirtualFile$5(PsiSearchHelperImpl.java:422)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1122)
at com.intellij.openapi.application.ex.ApplicationUtil.tryRunReadAction(ApplicationUtil.java:43)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processVirtualFile(PsiSearchHelperImpl.java:406)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.lambda$processPsiFileRoots$2(PsiSearchHelperImpl.java:320)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.lambda$processFilesConcurrentlyDespiteWriteActions$3(PsiSearchHelperImpl.java:353)
at com.intellij.concurrency.JobLauncherImpl.lambda$null$0(JobLauncherImpl.java:115)
at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:543)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:488)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
at com.intellij.concurrency.JobLauncherImpl.lambda$processImmediatelyIfTooFew$1(JobLauncherImpl.java:111)
at com.intellij.concurrency.JobLauncherImpl.a(JobLauncherImpl.java:125)
at com.intellij.concurrency.JobLauncherImpl.invokeConcurrentlyUnderProgress(JobLauncherImpl.java:57)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processFilesConcurrentlyDespiteWriteActions(PsiSearchHelperImpl.java:376)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processPsiFileRoots(PsiSearchHelperImpl.java:318)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processElementsWithTextInGlobalScope(PsiSearchHelperImpl.java:293)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.bulkProcessElementsWithWord(PsiSearchHelperImpl.java:185)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processSingleRequest(PsiSearchHelperImpl.java:935)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processGlobalRequestsOptimized(PsiSearchHelperImpl.java:662)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processRequests(PsiSearchHelperImpl.java:607)
at com.intellij.psi.search.SearchRequestQuery.processResults(SearchRequestQuery.java:45)
at com.intellij.util.AbstractQuery.forEach(AbstractQuery.java:80)
at com.intellij.util.MergeQuery.processSubQuery(MergeQuery.java:85)
at com.intellij.util.MergeQuery.forEach(MergeQuery.java:57)
at com.intellij.util.UniqueResultsQuery.process(UniqueResultsQuery.java:67)
at com.intellij.util.UniqueResultsQuery.forEach(UniqueResultsQuery.java:57)
at me.serce.solidity.ide.navigation.QueryUtilsKt$mapQuery$1.processResults(queryUtils.kt:8)
at com.intellij.util.AbstractQuery.forEach(AbstractQuery.java:80)
at com.intellij.util.InstanceofQuery.forEach(InstanceofQuery.java:58)
at me.serce.solidity.ide.navigation.QueryUtilsKt$mapQuery$1.processResults(queryUtils.kt:8)
at com.intellij.util.AbstractQuery.forEach(AbstractQuery.java:80)
at com.intellij.util.InstanceofQuery.forEach(InstanceofQuery.java:58)
at com.intellij.util.InstanceofQuery.findFirst(InstanceofQuery.java:52)
at me.serce.solidity.ide.annotation.SolContractLineMarkerProvider.collectSlowLineMarkers(SolContractLineMarkerProvider.kt:25)
at com.intellij.codeInsight.daemon.impl.LineMarkersPass.a(LineMarkersPass.java:213)
at com.intellij.codeInsight.daemon.impl.LineMarkersPass.lambda$doCollectInformation$3(LineMarkersPass.java:112)
at com.intellij.codeInsight.daemon.impl.Divider.divideInsideAndOutsideInOneRoot(Divider.java:96)
at com.intellij.codeInsight.daemon.impl.LineMarkersPass.doCollectInformation(LineMarkersPass.java:107)
at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:70)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$null$1(PassExecutorService.java:437)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1127)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:430)
at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:543)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:488)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.a(PassExecutorService.java:429)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:405)
at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:143)
at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:229)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:403)
at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:170)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

java.util.NoSuchElementException: Sequence contains no element matching the predicate.
at me.serce.solidity.lang.resolve.ref.SolFunctionCallReference.multiResolve(SolUserDefinedTypeNameReference.kt:69)
at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolve$0(ResolveCache.java:145)
at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:144)
at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:175)
at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:167)
at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:20)
at com.intellij.psi.PsiPolyVariantReferenceBase.isReferenceTo(PsiPolyVariantReferenceBase.java:52)
at com.intellij.psi.search.SingleTargetRequestResultProcessor.processTextOccurrence(SingleTargetRequestResultProcessor.java:52)
at com.intellij.psi.impl.search.PsiSearchHelperImpl$3.lambda$execute$0(PsiSearchHelperImpl.java:762)
at com.intellij.psi.impl.search.LowLevelSearchUtil.processTreeUp(LowLevelSearchUtil.java:139)
at com.intellij.psi.impl.search.LowLevelSearchUtil.processElementsAtOffsets(LowLevelSearchUtil.java:226)
at com.intellij.psi.impl.search.PsiSearchHelperImpl$3.execute(PsiSearchHelperImpl.java:758)
at com.intellij.psi.impl.search.PsiSearchHelperImpl$2.processInReadAction(PsiSearchHelperImpl.java:247)
at com.intellij.psi.impl.search.PsiSearchHelperImpl$2.processInReadAction(PsiSearchHelperImpl.java:238)
at com.intellij.openapi.application.ReadActionProcessor.lambda$process$0(ReadActionProcessor.java:28)
at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:47)
at com.intellij.openapi.application.ReadActionProcessor.process(ReadActionProcessor.java:28)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.lambda$processVirtualFile$5(PsiSearchHelperImpl.java:422)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1122)
at com.intellij.openapi.application.ex.ApplicationUtil.tryRunReadAction(ApplicationUtil.java:43)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processVirtualFile(PsiSearchHelperImpl.java:406)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.lambda$processPsiFileRoots$2(PsiSearchHelperImpl.java:320)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.lambda$processFilesConcurrentlyDespiteWriteActions$3(PsiSearchHelperImpl.java:353)
at com.intellij.concurrency.JobLauncherImpl.lambda$null$0(JobLauncherImpl.java:115)
at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:543)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:488)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
at com.intellij.concurrency.JobLauncherImpl.lambda$processImmediatelyIfTooFew$1(JobLauncherImpl.java:111)
at com.intellij.concurrency.JobLauncherImpl.a(JobLauncherImpl.java:125)
at com.intellij.concurrency.JobLauncherImpl.invokeConcurrentlyUnderProgress(JobLauncherImpl.java:57)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processFilesConcurrentlyDespiteWriteActions(PsiSearchHelperImpl.java:376)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processPsiFileRoots(PsiSearchHelperImpl.java:318)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processElementsWithTextInGlobalScope(PsiSearchHelperImpl.java:293)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.bulkProcessElementsWithWord(PsiSearchHelperImpl.java:185)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processSingleRequest(PsiSearchHelperImpl.java:935)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processGlobalRequestsOptimized(PsiSearchHelperImpl.java:662)
at com.intellij.psi.impl.search.PsiSearchHelperImpl.processRequests(PsiSearchHelperImpl.java:607)
at com.intellij.psi.search.SearchRequestQuery.processResults(SearchRequestQuery.java:45)
at com.intellij.util.AbstractQuery.forEach(AbstractQuery.java:80)
at com.intellij.util.MergeQuery.processSubQuery(MergeQuery.java:85)
at com.intellij.util.MergeQuery.forEach(MergeQuery.java:57)
at com.intellij.util.UniqueResultsQuery.process(UniqueResultsQuery.java:67)
at com.intellij.util.UniqueResultsQuery.forEach(UniqueResultsQuery.java:57)
at me.serce.solidity.ide.navigation.QueryUtilsKt$mapQuery$1.processResults(queryUtils.kt:8)
at com.intellij.util.AbstractQuery.forEach(AbstractQuery.java:80)
at com.intellij.util.InstanceofQuery.forEach(InstanceofQuery.java:58)
at me.serce.solidity.ide.navigation.QueryUtilsKt$mapQuery$1.processResults(queryUtils.kt:8)
at com.intellij.util.AbstractQuery.forEach(AbstractQuery.java:80)
at com.intellij.util.InstanceofQuery.forEach(InstanceofQuery.java:58)
at com.intellij.util.InstanceofQuery.findFirst(InstanceofQuery.java:52)
at me.serce.solidity.ide.annotation.SolContractLineMarkerProvider.collectSlowLineMarkers(SolContractLineMarkerProvider.kt:25)
at com.intellij.codeInsight.daemon.impl.LineMarkersPass.a(LineMarkersPass.java:213)
at com.intellij.codeInsight.daemon.impl.LineMarkersPass.lambda$doCollectInformation$3(LineMarkersPass.java:112)
at com.intellij.codeInsight.daemon.impl.Divider.divideInsideAndOutsideInOneRoot(Divider.java:96)
at com.intellij.codeInsight.daemon.impl.LineMarkersPass.doCollectInformation(LineMarkersPass.java:107)
at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:70)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$null$1(PassExecutorService.java:437)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1127)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:430)
at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:543)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:488)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.a(PassExecutorService.java:429)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:405)
at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:143)
at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:229)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:403)
at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:170)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

Auto-format should follow Solidity Style Guide by default

http://solidity.readthedocs.io/en/develop/style-guide.html

While this document itself acknowledges:

The goal of this guide is not to be the right way or the best way to write solidity code.

I think it would make sense to follow some of the recommendations there,
primarily the function declarations with multi-line arguments and / or modifiers.

If we can agree it's a good idea, then we should create individual issues for the various formatting rules.

Not working in PyCharm CE?

Hello,

I have PyCharm CE and installed the latest version of the plugin. However, when I create a new file, I don't see any option to associate my .sol file with the plugin. How can I get PyCharm CE to recognize .sol files?

Add inner block indentation

Please add caret shift after hitting enter to start child block. Now the caret is indented at the same position as a parent block. I have to press Tab every time I start to write a new inner block.

For example:

function test() private returns (uint) {
    if (amount < 0) {
    //caret is here
    }
}

Expected:

function test() private returns (uint) {
    if (amount < 0) {
        //caret is here
    }
}

Refactoring throws "Check failed" exception

Reproduce

git clone https://gitlab.com/oax/asset-gateway-poc.git
cd asset-gateway-poc
git checkout 5ecdc61359102fe9e56524ef495e225626485267

Select the 01-fiat-token/chain/contracts/Lab.sol file in the Project view and press Cmd-F6.
Change Lab to AssetGatewayToken, press OK, then press "Do Refactor" in the opening tool window.

The refactoring operations fails with this exception:

Check failed.
java.lang.IllegalStateException: Check failed.
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.doRename(SolReferenceBase.kt:37)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.handleElementRename(SolReferenceBase.kt:29)
	at com.intellij.refactoring.rename.RenameUtil.rename(RenameUtil.java:267)
	at com.intellij.refactoring.rename.RenameUtil.doRenameGenericNamedElement(RenameUtil.java:224)
	at com.intellij.refactoring.rename.RenamePsiElementProcessor.renameElement(RenamePsiElementProcessor.java:58)
	at com.intellij.refactoring.rename.RenameUtil.doRename(RenameUtil.java:188)
	at com.intellij.refactoring.rename.RenameProcessor.performRefactoring(RenameProcessor.java:380)
	at com.intellij.refactoring.BaseRefactoringProcessor.a(BaseRefactoringProcessor.java:475)
	at com.intellij.refactoring.BaseRefactoringProcessor.a(BaseRefactoringProcessor.java:486)
	at com.intellij.openapi.application.impl.ApplicationImpl.a(ApplicationImpl.java:980)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:170)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:548)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:493)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:157)
	at com.intellij.openapi.progress.util.PotemkinProgress.runInSwingThread(PotemkinProgress.java:167)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteActionWithProgressInDispatchThread(ApplicationImpl.java:980)
	at com.intellij.refactoring.BaseRefactoringProcessor.a(BaseRefactoringProcessor.java:486)
	at com.intellij.refactoring.BaseRefactoringProcessor.b(BaseRefactoringProcessor.java:314)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.a(CoreCommandProcessor.java:141)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:109)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:99)
	at com.intellij.refactoring.BaseRefactoringProcessor.execute(BaseRefactoringProcessor.java:312)
	at com.intellij.refactoring.BaseRefactoringProcessor.a(BaseRefactoringProcessor.java:418)
	at com.intellij.openapi.application.TransactionGuardImpl.a(TransactionGuardImpl.java:86)
	at com.intellij.openapi.application.TransactionGuardImpl.submitTransactionAndWait(TransactionGuardImpl.java:151)
	at com.intellij.refactoring.BaseRefactoringProcessor.a(BaseRefactoringProcessor.java:416)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.a(CoreCommandProcessor.java:149)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:109)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:99)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:85)
	at com.intellij.usages.impl.UsageViewImpl$MyPerformOperationRunnable.run(UsageViewImpl.java:1849)
	at com.intellij.usages.impl.UsageViewImpl$ButtonPanel.lambda$addButtonRunnable$0(UsageViewImpl.java:1762)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6541)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6306)
	at java.awt.Container.processEvent(Container.java:2237)
	at java.awt.Component.dispatchEventImpl(Component.java:4897)
	at java.awt.Container.dispatchEventImpl(Container.java:2295)
	at java.awt.Component.dispatchEvent(Component.java:4719)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
	at java.awt.Container.dispatchEventImpl(Container.java:2281)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4719)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
	at java.awt.EventQueue.access$500(EventQueue.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:715)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
	at java.awt.EventQueue$4.run(EventQueue.java:737)
	at java.awt.EventQueue$4.run(EventQueue.java:735)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
	at com.intellij.ide.IdeEventQueue.d(IdeEventQueue.java:821)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:645)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:365)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

IntelliJ Solidity plugin: v2.0.2

IntelliJ IDEA 2017.2.5
Build #IU-172.4343.14, built on September 26, 2017
Licensed to Tamas Herman
Subscription is active until October 28, 2017
JRE: 1.8.0_152-release-915-b12 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.13

multiple values return is marked as an error

If I return more than one value, for ex: return (1, 23, 5) and the return type is returns (uint, uint, uint),
It marks it as illegal. It looks like the plugin doesn't recognize multiple values return statement as valid

NoSuchElementException: SolArgumentsDescription$Companion.findDescription

https://sentry.io/intellij-solidity/intellij-solidity/issues/464608977/

NoSuchElementException: Sequence contains no element matching the predicate.
    at me.serce.solidity.ide.hints.SolArgumentsDescription$Companion.findDescription(SolParameterInfoHandler.kt:135)
    at me.serce.solidity.ide.hints.SolParameterInfoHandler.showParameterInfo(SolParameterInfoHandler.kt:24)
    at me.serce.solidity.ide.hints.SolParameterInfoHandler.showParameterInfo(SolParameterInfoHandler.kt:11)
    at com.intellij.codeInsight.hint.ShowParameterInfoHandler.invoke(ShowParameterInfoHandler.java:132)
    at com.intellij.codeInsight.AutoPopupController.a(AutoPopupController.java:201)
...
(21 additional frame(s) were not displayed)

Sequence contains no element matching the predicate.

Plugin reports not existing errors

Hi,
So I'm new to solidity and using your plugin just to browse but it reports errors in code that I know is correct.
Attaching screen-shots:
sol_plugin_error_1

sol_plugin_error_2

Exception in SolidityIdeCompiler

kotlin.KotlinNullPointerException
	at me.serce.solidity.ide.run.compile.SolidityIdeCompiler.process(SolidityIdeCompiler.kt:48)
	at com.intellij.compiler.impl.FileProcessingCompilerAdapterTask.execute(FileProcessingCompilerAdapterTask.java:94)
	at com.intellij.compiler.impl.CompileDriver.executeCompileTasks(CompileDriver.java:607)
	at com.intellij.compiler.impl.CompileDriver.lambda$startup$3(CompileDriver.java:440)
	at com.intellij.compiler.progress.CompilerTask.run(CompilerTask.java:192)
	at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:750)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:157)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:580)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:525)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:85)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:144)
	at com.intellij.openapi.progress.impl.CoreProgressManager$4.run(CoreProgressManager.java:395)
	at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:305)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

experimental pragmas causing issues

Plugin version 2.0.2

These pragmas are not being parsed properly:

pragma experimental "v0.5.0";
pragma experimental ABIEncoderV2;

They are needed to run the latest stuff (you can't remove citation marks around "v0.5.0" or it will throw and complain about stray arguments). Both of those will report errors in the IDE.

Meta: Formatting fixes

  • Structs indentation
  • Comments indentation
  • Rearranging contract parts
  • Single line if indentation

Bug: invalid code reformatting

For instance I have code:

2017-03-28 1 19 28

When I use Code Reformat with intellij-solidity plugin I get:

2017-03-28 1 20 06

Bugs

  1. Excess empty string before imports
  2. Excess empty string before 'contract' keyword
  3. Excess empty string before each mapping/variable, but it will be great if you leave empty string after events and before if they are located not right after 'contract' keyword line
  4. All comments are now without indents

Crazy CPU Usage

I have a ~1000 line solidity file, and as soon as I open it IntelliJ CPU usage shoots up to 50-90% overall, and stays there. When I close the file CPU usage drops to acceptable (1-5%) amounts.

Is this just what happens with large files, or could there be a bug somewhere?

I'll be able to share the source code in a few days if that matters.

MissingResourceException: Can't find bundle for base name messages.QuickFixBundle, locale en_US

https://sentry.io/intellij-solidity/intellij-solidity/issues/474964113/

java.util.MissingResourceException: Can't find bundle for base name messages.QuickFixBundle, locale ru_RU
    at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564)
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387)
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:773)
    at com.intellij.codeInsight.daemon.QuickFixBundle.getBundle(QuickFixBundle.java:45)
    at com.intellij.codeInsight.daemon.QuickFixBundle.message(QuickFixBundle.java:39)
    at me.serce.solidity.ide.inspections.fixes.ImportFileFix.showHint(ImportFileFix.kt:29)
    at com.intellij.codeInsight.daemon.impl.ShowAutoImportPass.showAddImportHint(ShowAutoImportPass.java:147)
    at com.intellij.codeInsight.daemon.impl.ShowAutoImportPass.addImports(ShowAutoImportPass.java:93)
    at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:88)
    at com.intellij.openapi.application.TransactionGuardImpl.lambda$pollQueueLater$0(TransactionGuardImpl.java:74)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:424)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:407)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:762)
    at java.awt.EventQueue.access$500(EventQueue.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:715)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(AccessController.java)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:732)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:822)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:650)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:366)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Syntax Error

Hello! Thanks for an awesome plugin for Intellij!

I've found one syntax problem. While this code is valid and compiles well, it shows an error:

2017-12-21_234728

I will be happy to help if you don't mind, just point me to a piece of source code to look at or DIY :) Thanks!

StackOverflowError, SolResolver.resolveTypeNameUsingImports(engine.kt:25)

https://sentry.io/intellij-solidity/intellij-solidity/issues/434366046/

java.lang.StackOverflowError: null
    at com.intellij.openapi.vfs.newvfs.impl.VfsData.getNameByFileId(VfsData.java:178)
    at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.findIndex(VirtualDirectoryImpl.java:481)
    at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.doFindChildInArray(VirtualDirectoryImpl.java:130)
    at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.doFindChild(VirtualDirectoryImpl.java:150)
    at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.findChild(VirtualDirectoryImpl.java:95)
    at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.findChild(VirtualDirectoryImpl.java:399)
    at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.findChild(VirtualDirectoryImpl.java:57)
    at com.intellij.openapi.vfs.VirtualFile.findFileByRelativePath(VirtualFile.java:370)
    at com.intellij.openapi.vfs.VirtualFile.findFileByRelativePath(VirtualFile.java:376)
    at com.intellij.openapi.vfs.VirtualFile.findFileByRelativePath(VirtualFile.java:376)
    at me.serce.solidity.lang.resolve.ref.SolImportPathReference.singleResolve(SolImportPathReference.kt:16)
    at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:24)
    at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
    at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
    at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
    at com.intellij.psi.impl.source.resolve.ResolveCache$3.compute(ResolveCache.java:142)
    at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
    at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:139)
    at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:167)
    at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:159)
    at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:20)
    at com.intellij.psi.PsiPolyVariantReferenceBase.resolve(PsiPolyVariantReferenceBase.java:46)
    at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:34)
    at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:14)
    at me.serce.solidity.lang.resolve.SolResolver.resolveTypeNameUsingImports(engine.kt:23)
    at me.serce.solidity.lang.resolve.SolResolver.resolveTypeNameUsingImports(engine.kt:25)
    at me.serce.solidity.lang.resolve.SolResolver.resolveTypeNameUsingImports(engine.kt:25)
(1019 additional frame(s) were not displayed)

Exception in plugin

Comments

com.intellij.psi.util.PsiTreeUtil.getStubChildrenOfTypeAsList(Lcom/intellij/psi/PsiElement;Ljava/lang/Class;)Ljava/util/List;

Details:

com.intellij.psi.util.PsiTreeUtil.getStubChildrenOfTypeAsList(Lcom/intellij/psi/PsiElement;Ljava/lang/Class;)Ljava/util/List;
java.lang.NoSuchMethodError: com.intellij.psi.util.PsiTreeUtil.getStubChildrenOfTypeAsList(Lcom/intellij/psi/PsiElement;Ljava/lang/Class;)Ljava/util/List;
	at me.serce.solidity.lang.psi.impl.SolContractDefinitionImpl.getStateVariableDeclarationList(SolContractDefinitionImpl.java:67)
	at me.serce.solidity.lang.resolve.SolResolver.lexicalDeclarations(engine.kt:125)
	at me.serce.solidity.lang.resolve.SolResolver.lexicalDeclarations(engine.kt:109)
	at me.serce.solidity.lang.resolve.SolResolver.lexicalDeclarations$default(engine.kt:107)
	at me.serce.solidity.lang.resolve.SolResolver.resolveVarLiteral(engine.kt:45)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:92)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt:143)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at me.serce.solidity.lang.types.InferenceKt$type$1.compute(inference.kt:142)
	at com.intellij.psi.util.CachedValuesManager$1.compute(CachedValuesManager.java:136)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
	at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:66)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:129)
	at me.serce.solidity.lang.types.InferenceKt.getType(inference.kt:141)
	at me.serce.solidity.lang.resolve.ref.SolFunctionCallReference.multiResolve(SolUserDefinedTypeNameReference.kt:57)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
	at com.intellij.psi.impl.source.resolve.ResolveCache$3.compute(ResolveCache.java:142)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.psi.impl.source.resolve.ResolveCache.a(ResolveCache.java:139)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:167)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:159)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:20)
	at com.intellij.psi.PsiPolyVariantReferenceBase.resolve(PsiPolyVariantReferenceBase.java:46)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:34)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:14)
	at com.intellij.codeInsight.TargetElementUtil.b(TargetElementUtil.java:371)
	at com.intellij.codeInsight.TargetElementUtil.a(TargetElementUtil.java:348)
	at com.intellij.codeInsight.TargetElementUtil.a(TargetElementUtil.java:215)
	at com.intellij.codeInsight.TargetElementUtil.findTargetElement(TargetElementUtil.java:184)
	at com.intellij.codeInsight.navigation.actions.GotoDeclarationAction.findTargetElementsNoVS(GotoDeclarationAction.java:252)
	at com.intellij.codeInsight.navigation.actions.GotoDeclarationAction.findAllTargetElements(GotoDeclarationAction.java:214)
	at com.intellij.codeInsight.navigation.actions.GotoDeclarationAction.invoke(GotoDeclarationAction.java:84)
	at com.intellij.codeInsight.actions.CodeInsightAction$1$1.run(CodeInsightAction.java:62)
	at com.intellij.codeInsight.actions.CodeInsightAction$1.run(CodeInsightAction.java:69)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:124)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:99)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:85)
	at com.intellij.codeInsight.actions.CodeInsightAction.actionPerformedImpl(CodeInsightAction.java:54)
	at com.intellij.codeInsight.actions.CodeInsightAction.actionPerformed(CodeInsightAction.java:40)
	at com.intellij.openapi.keymap.impl.IdeMouseEventDispatcher.dispatchMouseEvent(IdeMouseEventDispatcher.java:249)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:649)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:381)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)



java.lang.NoSuchMethodError: com.intellij.psi.util.PsiTreeUtil.getStubChildrenOfTypeAsList(Lcom/intellij/psi/PsiElement;Ljava/lang/Class;)Ljava/util/List;
	at me.serce.solidity.lang.psi.impl.SolContractDefinitionImpl.getStateVariableDeclarationList(SolContractDefinitionImpl.java:67)
	at me.serce.solidity.lang.resolve.SolResolver.lexicalDeclarations(engine.kt:125)
	at me.serce.solidity.lang.resolve.SolResolver.lexicalDeclarations(engine.kt:109)
	at me.serce.solidity.lang.resolve.SolResolver.lexicalDeclarations$default(engine.kt:107)
	at me.serce.solidity.lang.resolve.SolResolver.resolveVarLiteral(engine.kt:45)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:92)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt:143)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at me.serce.solidity.lang.types.InferenceKt$type$1.compute(inference.kt:142)
	at com.intellij.psi.util.CachedValuesManager$1.compute(CachedValuesManager.java:136)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
	at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:66)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:129)
	at me.serce.solidity.lang.types.InferenceKt.getType(inference.kt:141)
	at me.serce.solidity.lang.resolve.ref.SolFunctionCallReference.multiResolve(SolUserDefinedTypeNameReference.kt:57)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
	at com.intellij.psi.impl.source.resolve.ResolveCache$3.compute(ResolveCache.java:142)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.psi.impl.source.resolve.ResolveCache.a(ResolveCache.java:139)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:167)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:159)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:20)
	at com.intellij.psi.PsiPolyVariantReferenceBase.resolve(PsiPolyVariantReferenceBase.java:46)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:34)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:14)
	at com.intellij.codeInsight.TargetElementUtil.b(TargetElementUtil.java:371)
	at com.intellij.codeInsight.TargetElementUtil.a(TargetElementUtil.java:348)
	at com.intellij.codeInsight.TargetElementUtil.a(TargetElementUtil.java:215)
	at com.intellij.codeInsight.TargetElementUtil.findTargetElement(TargetElementUtil.java:184)
	at com.intellij.codeInsight.daemon.impl.IdentifierHighlighterPass.doCollectInformation(IdentifierHighlighterPass.java:91)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:67)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass$1$1.run(PassExecutorService.java:444)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1177)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass$1.run(PassExecutorService.java:435)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:446)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:392)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.a(PassExecutorService.java:432)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:408)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:206)
	at jsr166e.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at jsr166e.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:858)
	at jsr166e.ForkJoinPool.scan(ForkJoinPool.java:1687)
	at jsr166e.ForkJoinPool.runWorker(ForkJoinPool.java:1642)
	at jsr166e.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:108)

Pure and Views

Should we not add syntax highlight for pure and view? the same way we have it for constant?

emit syntax

Using emit (e.g. emit Deposit(msg.sender, _id, msg.value);) displays an error:

Separate types from keywords and more

Hi, I am using this plugin and it's very usefull for me, but I want to ask you for some modifications.

  1. Looks like now, we can configure Keyword section Color Scheme, but in sublime I see that variable Types are highlighted with separate color.

  2. And I have also noticed, that when we set color for Contract reference we highlight only inherited contracts names, but not a contract name after contract keyword.

  3. Also parameters and returns variables names are highlighted with separate color in Sublime, not the same as all other variables.

Thank you!

ArrayIndexOutOfBoundsException in RunConfigurationProducer

https://sentry.io/intellij-solidity/intellij-solidity-n/issues/540796423/

java.lang.ArrayIndexOutOfBoundsException: 0
    at com.intellij.execution.actions.RunConfigurationProducer.<init>(RunConfigurationProducer.java:67)
    at me.serce.solidity.ide.run.SolidityRunConfigProducer.<init>(SolidityRunConfigProducer.kt:18)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(NativeConstructorAccessorImpl.java)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.picocontainer.defaults.InstantiatingComponentAdapter.newInstance(InstantiatingComponentAdapter.java:193)
    at com.intellij.util.pico.CachingConstructorInjectionComponentAdapter.doGetComponentInstance(CachingConstructorInjectionComponentAdapter.java:103)
    at com.intellij.util.pico.CachingConstructorInjectionComponentAdapter.instantiateGuarded(CachingConstructorInjectionComponentAdapter.java:80)
    at com.intellij.util.pico.CachingConstructorInjectionComponentAdapter.getComponentInstance(CachingConstructorInjectionComponentAdapter.java:63)
    at com.intellij.openapi.extensions.impl.ExtensionComponentAdapter.getComponentInstance(ExtensionComponentAdapter.java:77)
    at com.intellij.openapi.extensions.impl.ExtensionComponentAdapter.getExtension(ExtensionComponentAdapter.java:119)
    at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapters(ExtensionPointImpl.java:246)
    at com.intellij.openapi.extensions.impl.ExtensionPointImpl.getExtensions(ExtensionPointImpl.java:191)
    at com.intellij.openapi.extensions.Extensions.getExtensions(Extensions.java:102)
    at com.intellij.openapi.extensions.Extensions.getExtensions(Extensions.java:89)
    at com.intellij.execution.actions.RunConfigurationProducer.getProducers(RunConfigurationProducer.java:48)
    at com.intellij.execution.lineMarker.ExecutorAction$Companion.a(ExecutorAction.kt:74)
    at com.intellij.execution.lineMarker.ExecutorAction$Companion.b(ExecutorAction.kt:62)
    at com.intellij.execution.lineMarker.ExecutorAction$Companion.access$getConfigurations(ExecutorAction.kt:45)
    at com.intellij.execution.lineMarker.ExecutorAction.a(ExecutorAction.kt:108)
    at com.intellij.execution.lineMarker.ExecutorAction.update(ExecutorAction.kt:85)
    at com.intellij.execution.lineMarker.RunLineMarkerContributor.getText(RunLineMarkerContributor.java:77)
    at me.serce.solidity.ide.run.SolidityRunLineMarkerProvider.access$getText$s-1171017470(SolidityRunConfigProducer.kt:53)
    at me.serce.solidity.ide.run.SolidityRunLineMarkerProvider$getInfo$1$1.fun(SolidityRunConfigProducer.kt:61)
    at me.serce.solidity.ide.run.SolidityRunLineMarkerProvider$getInfo$1$1.fun(SolidityRunConfigProducer.kt:53)
    at com.intellij.util.containers.ContainerUtil.mapNotNull(ContainerUtil.java:1838)
    at com.intellij.util.containers.ContainerUtil.mapNotNull(ContainerUtil.java:1787)
    at me.serce.solidity.ide.run.SolidityRunLineMarkerProvider$getInfo$1.fun(SolidityRunConfigProducer.kt:61)
    at me.serce.solidity.ide.run.SolidityRunLineMarkerProvider$getInfo$1.fun(SolidityRunConfigProducer.kt:53)
    at com.intellij.execution.lineMarker.RunLineMarkerContributor$Info.a(RunLineMarkerContributor.java:54)
    at com.intellij.execution.lineMarker.RunLineMarkerProvider.a(RunLineMarkerProvider.java:100)
    at com.intellij.codeInsight.daemon.LineMarkerInfo.getLineMarkerTooltip(LineMarkerInfo.java:132)
    at com.intellij.codeInsight.daemon.LineMarkerInfo$LineMarkerGutterIconRenderer.getTooltipText(LineMarkerInfo.java:179)
    at com.intellij.openapi.editor.impl.EditorGutterComponentImpl.mouseMoved(EditorGutterComponentImpl.java:1456)
    at com.intellij.openapi.editor.impl.EditorImpl$MyMouseMotionListener.mouseMoved(EditorImpl.java:3932)
    at java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:330)
    at java.awt.Component.processMouseMotionEvent(Component.java:6586)
    at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3342)
    at java.awt.Component.processEvent(Component.java:6310)
    at java.awt.Container.processEvent(Container.java:2237)
    at java.awt.Component.dispatchEventImpl(Component.java:4897)
    at java.awt.Container.dispatchEventImpl(Container.java:2295)
    at java.awt.Component.dispatchEvent(Component.java:4719)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4539)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
    at java.awt.Container.dispatchEventImpl(Container.java:2281)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4719)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
    at java.awt.EventQueue.access$500(EventQueue.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:715)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(AccessController.java)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:737)
    at java.awt.EventQueue$4.run(EventQueue.java:735)
    at java.security.AccessController.doPrivileged(AccessController.java)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
    at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:822)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:646)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:366)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
com.intellij.openapi.extensions.impl.PicoPluginExtensionInitializationException: 0
    at com.intellij.openapi.extensions.impl.ExtensionComponentAdapter.getComponentInstance(ExtensionComponentAdapter.java:96)
    at com.intellij.openapi.extensions.impl.ExtensionComponentAdapter.getExtension(ExtensionComponentAdapter.java:119)
    at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapters(ExtensionPointImpl.java:246)
    at com.intellij.openapi.extensions.impl.ExtensionPointImpl.getExtensions(ExtensionPointImpl.java:191)
    at com.intellij.openapi.extensions.Extensions.getExtensions(Extensions.java:102)
    at com.intellij.openapi.extensions.Extensions.getExtensions(Extensions.java:89)
    at com.intellij.execution.actions.RunConfigurationProducer.getProducers(RunConfigurationProducer.java:48)
    at com.intellij.execution.lineMarker.ExecutorAction$Companion.a(ExecutorAction.kt:74)
    at com.intellij.execution.lineMarker.ExecutorAction$Companion.b(ExecutorAction.kt:62)
    at com.intellij.execution.lineMarker.ExecutorAction$Companion.access$getConfigurations(ExecutorAction.kt:45)
    at com.intellij.execution.lineMarker.ExecutorAction.a(ExecutorAction.kt:108)
    at com.intellij.execution.lineMarker.ExecutorAction.update(ExecutorAction.kt:85)
    at com.intellij.execution.lineMarker.RunLineMarkerContributor.getText(RunLineMarkerContributor.java:77)
    at me.serce.solidity.ide.run.SolidityRunLineMarkerProvider.access$getText$s-1171017470(SolidityRunConfigProducer.kt:53)
    at me.serce.solidity.ide.run.SolidityRunLineMarkerProvider$getInfo$1$1.fun(SolidityRunConfigProducer.kt:61)
    at me.serce.solidity.ide.run.SolidityRunLineMarkerProvider$getInfo$1$1.fun(SolidityRunConfigProducer.kt:53)
    at com.intellij.util.containers.ContainerUtil.mapNotNull(ContainerUtil.java:1838)
    at com.intellij.util.containers.ContainerUtil.mapNotNull(ContainerUtil.java:1787)
    at me.serce.solidity.ide.run.SolidityRunLineMarkerProvider$getInfo$1.fun(SolidityRunConfigProducer.kt:61)
    at me.serce.solidity.ide.run.SolidityRunLineMarkerProvider$getInfo$1.fun(SolidityRunConfigProducer.kt:53)
    at com.intellij.execution.lineMarker.RunLineMarkerContributor$Info.a(RunLineMarkerContributor.java:54)
    at com.intellij.execution.lineMarker.RunLineMarkerProvider.a(RunLineMarkerProvider.java:100)
    at com.intellij.codeInsight.daemon.LineMarkerInfo.getLineMarkerTooltip(LineMarkerInfo.java:132)
    at com.intellij.codeInsight.daemon.LineMarkerInfo$LineMarkerGutterIconRenderer.getTooltipText(LineMarkerInfo.java:179)
    at com.intellij.openapi.editor.impl.EditorGutterComponentImpl.mouseMoved(EditorGutterComponentImpl.java:1456)
    at com.intellij.openapi.editor.impl.EditorImpl$MyMouseMotionListener.mouseMoved(EditorImpl.java:3932)
    at java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:330)
    at java.awt.Component.processMouseMotionEvent(Component.java:6586)
    at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3342)
    at java.awt.Component.processEvent(Component.java:6310)
    at java.awt.Container.processEvent(Container.java:2237)
    at java.awt.Component.dispatchEventImpl(Component.java:4897)
    at java.awt.Container.dispatchEventImpl(Container.java:2295)
    at java.awt.Component.dispatchEvent(Component.java:4719)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4539)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
    at java.awt.Container.dispatchEventImpl(Container.java:2281)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4719)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
    at java.awt.EventQueue.access$500(EventQueue.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:715)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(AccessController.java)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:737)
    at java.awt.EventQueue$4.run(EventQueue.java:735)
    at java.security.AccessController.doPrivileged(AccessController.java)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
    at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:822)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:646)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:366)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Error Building

Here is what I get when building on MacOS X.

$ ./gradlew buildPlugin

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '10.0.1'.

I tried upgrading the JDK, changing JAVA_HOME, etc.

SolResolver#resolveFunRec: IndexOutOfBoundsException: Index: 0, Size: 0

https://sentry.io/intellij-solidity/intellij-solidity/issues/435793732/

IndexOutOfBoundsException: Index: 0, Size: 0
    at com.intellij.util.SmartList.get(SmartList.java:66)
    at me.serce.solidity.lang.resolve.SolResolver.resolveFunRec(engine.kt:88)
    at me.serce.solidity.lang.resolve.SolResolver.resolveFunction(engine.kt:81)
    at me.serce.solidity.lang.resolve.ref.SolFunctionCallReference.multiResolve(SolUserDefinedTypeNameReference.kt:62)
    at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
...
(59 additional frame(s) were not displayed)

Index: 0, Size: 0

Throws exception

Sometimes throws an exception while editing:

bytes32
 parent=bytes32[]
java.lang.Throwable
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:132)
	at com.intellij.psi.impl.PsiElementBase.notNullChild(PsiElementBase.java:285)
	at me.serce.solidity.lang.psi.impl.SolArrayTypeNameImpl.getTypeName(SolArrayTypeNameImpl.java:49)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:57)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:57)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:83)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:148)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:108)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:132)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:120)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:12)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt:147)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:113)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at me.serce.solidity.lang.types.InferenceKt$type$1.compute(inference.kt:146)
	at com.intellij.psi.util.CachedValuesManager.lambda$getCachedValue$0(CachedValuesManager.java:140)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
	at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
	at com.intellij.util.CachedValuesManagerImpl.getCachedValue(CachedValuesManagerImpl.java:87)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:139)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:126)
	at me.serce.solidity.lang.types.InferenceKt.getType(inference.kt:145)
	at me.serce.solidity.lang.resolve.SolResolver.resolveMemberAccess(engine.kt:53)
	at me.serce.solidity.lang.resolve.ref.SolMemberAccessReference.multiResolve(SolUserDefinedTypeNameReference.kt:44)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolve$0(ResolveCache.java:142)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:113)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:141)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:166)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:158)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:20)
	at com.intellij.psi.PsiPolyVariantReferenceBase.resolve(PsiPolyVariantReferenceBase.java:46)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:34)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:14)
	at com.intellij.codeInsight.TargetElementUtil.doGetReferenceOrReferencedElement(TargetElementUtil.java:389)
	at com.intellij.codeInsight.TargetElementUtil.getReferenceOrReferencedElement(TargetElementUtil.java:366)
	at com.intellij.codeInsight.TargetElementUtil.doFindTargetElement(TargetElementUtil.java:236)
	at com.intellij.codeInsight.TargetElementUtil.findTargetElement(TargetElementUtil.java:208)
	at com.intellij.codeInsight.daemon.impl.IdentifierHighlighterPass.doCollectInformation(IdentifierHighlighterPass.java:92)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:70)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$null$1(PassExecutorService.java:438)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1160)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:431)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:548)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:493)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:430)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:406)
	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:142)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:249)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:404)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:165)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)


java.lang.Throwable
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:132)
	at com.intellij.psi.impl.PsiElementBase.notNullChild(PsiElementBase.java:285)
	at me.serce.solidity.lang.psi.impl.SolArrayTypeNameImpl.getTypeName(SolArrayTypeNameImpl.java:49)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:57)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:57)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:83)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:148)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:108)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:132)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:120)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:12)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt:147)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:113)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at me.serce.solidity.lang.types.InferenceKt$type$1.compute(inference.kt:146)
	at com.intellij.psi.util.CachedValuesManager.lambda$getCachedValue$0(CachedValuesManager.java:140)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
	at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:136)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:126)
	at me.serce.solidity.lang.types.InferenceKt.getType(inference.kt:145)
	at me.serce.solidity.lang.resolve.SolResolver.resolveMemberAccess(engine.kt:53)
	at me.serce.solidity.lang.resolve.ref.SolMemberAccessReference.multiResolve(SolUserDefinedTypeNameReference.kt:44)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolve$0(ResolveCache.java:142)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:113)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:141)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:166)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:158)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:20)
	at com.intellij.psi.PsiPolyVariantReferenceBase.resolve(PsiPolyVariantReferenceBase.java:46)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:34)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:14)
	at com.intellij.codeInsight.TargetElementUtil.doGetReferenceOrReferencedElement(TargetElementUtil.java:389)
	at com.intellij.codeInsight.TargetElementUtil.getReferenceOrReferencedElement(TargetElementUtil.java:366)
	at com.intellij.codeInsight.TargetElementUtil.doFindTargetElement(TargetElementUtil.java:236)
	at com.intellij.codeInsight.TargetElementUtil.findTargetElement(TargetElementUtil.java:208)
	at com.intellij.codeInsight.daemon.impl.IdentifierHighlighterPass.doCollectInformation(IdentifierHighlighterPass.java:92)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:70)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$null$1(PassExecutorService.java:438)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1160)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:431)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:548)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:493)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:430)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:406)
	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:142)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:249)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:404)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:165)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)


java.lang.IllegalStateException: @NotNull method com/intellij/psi/impl/PsiElementBase.notNullChild must not return null
	at com.intellij.psi.impl.PsiElementBase.notNullChild(PsiElementBase.java:287)
	at me.serce.solidity.lang.psi.impl.SolArrayTypeNameImpl.getTypeName(SolArrayTypeNameImpl.java:49)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:57)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:57)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:83)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:148)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:108)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:132)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:120)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:12)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt:147)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:113)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at me.serce.solidity.lang.types.InferenceKt$type$1.compute(inference.kt:146)
	at com.intellij.psi.util.CachedValuesManager.lambda$getCachedValue$0(CachedValuesManager.java:140)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
	at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:136)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:126)
	at me.serce.solidity.lang.types.InferenceKt.getType(inference.kt:145)
	at me.serce.solidity.lang.resolve.SolResolver.resolveMemberAccess(engine.kt:53)
	at me.serce.solidity.lang.resolve.ref.SolMemberAccessReference.multiResolve(SolUserDefinedTypeNameReference.kt:44)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolve$0(ResolveCache.java:142)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:113)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:141)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:166)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:158)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:20)
	at com.intellij.psi.PsiPolyVariantReferenceBase.resolve(PsiPolyVariantReferenceBase.java:46)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:34)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:14)
	at com.intellij.codeInsight.TargetElementUtil.doGetReferenceOrReferencedElement(TargetElementUtil.java:389)
	at com.intellij.codeInsight.TargetElementUtil.getReferenceOrReferencedElement(TargetElementUtil.java:366)
	at com.intellij.codeInsight.TargetElementUtil.doFindTargetElement(TargetElementUtil.java:236)
	at com.intellij.codeInsight.TargetElementUtil.findTargetElement(TargetElementUtil.java:208)
	at com.intellij.codeInsight.daemon.impl.IdentifierHighlighterPass.doCollectInformation(IdentifierHighlighterPass.java:92)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:70)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$null$1(PassExecutorService.java:438)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1160)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:431)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:548)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:493)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:430)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:406)
	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:142)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:249)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:404)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:165)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

Weird exception gets thrown during editing

bytes32
 parent=mapping(bytes32 => PendingState)
java.lang.Throwable
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:132)
	at com.intellij.psi.impl.PsiElementBase.notNullChild(PsiElementBase.java:285)
	at me.serce.solidity.lang.psi.impl.SolArrayTypeNameImpl.getTypeName(SolArrayTypeNameImpl.java:49)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:57)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:48)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:84)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:137)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:98)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:121)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:103)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:11)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:120)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:73)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:137)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:98)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:121)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:103)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:11)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt:143)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at me.serce.solidity.lang.types.InferenceKt$type$1.compute(inference.kt:142)
	at com.intellij.psi.util.CachedValuesManager.lambda$getCachedValue$0(CachedValuesManager.java:141)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
	at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:137)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:127)
	at me.serce.solidity.lang.types.InferenceKt.getType(inference.kt:141)
	at me.serce.solidity.lang.resolve.SolResolver.resolveMemberAccess(engine.kt:53)
	at me.serce.solidity.lang.resolve.ref.SolMemberAccessReference.multiResolve(SolUserDefinedTypeNameReference.kt:44)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolve$0(ResolveCache.java:140)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:139)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:163)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:155)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:20)
	at com.intellij.psi.PsiPolyVariantReferenceBase.resolve(PsiPolyVariantReferenceBase.java:46)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:34)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:14)
	at com.intellij.codeInsight.intention.AddAnnotationPsiFix.getContainer(AddAnnotationPsiFix.java:73)
	at com.intellij.codeInsight.intention.impl.AddAnnotationIntention.isAvailable(AddAnnotationIntention.java:52)
	at com.intellij.codeInsight.intention.impl.config.IntentionActionWrapper.isAvailable(IntentionActionWrapper.java:60)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.availableFor(ShowIntentionActionsHandler.java:130)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.a(ShowIntentionsPass.java:314)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.chooseBetweenHostAndInjected(ShowIntentionActionsHandler.java:155)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.getActionsToShow(ShowIntentionsPass.java:313)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.a(ShowIntentionsPass.java:245)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.doCollectInformation(ShowIntentionsPass.java:221)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:70)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.a(PassExecutorService.java:438)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1153)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.b(PassExecutorService.java:431)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:556)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:501)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.c(PassExecutorService.java:430)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.d(PassExecutorService.java:406)
	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:142)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:242)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:404)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:165)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)


java.lang.Throwable
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:132)
	at com.intellij.psi.impl.PsiElementBase.notNullChild(PsiElementBase.java:285)
	at me.serce.solidity.lang.psi.impl.SolArrayTypeNameImpl.getTypeName(SolArrayTypeNameImpl.java:49)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:57)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:48)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:84)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:137)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:98)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:121)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:103)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:11)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:120)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:73)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:137)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:98)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:121)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:103)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:11)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt:143)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at me.serce.solidity.lang.types.InferenceKt$type$1.compute(inference.kt:142)
	at com.intellij.psi.util.CachedValuesManager.lambda$getCachedValue$0(CachedValuesManager.java:141)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
	at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:137)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:127)
	at me.serce.solidity.lang.types.InferenceKt.getType(inference.kt:141)
	at me.serce.solidity.lang.resolve.SolResolver.resolveMemberAccess(engine.kt:53)
	at me.serce.solidity.lang.resolve.ref.SolMemberAccessReference.multiResolve(SolUserDefinedTypeNameReference.kt:44)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolve$0(ResolveCache.java:140)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:139)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:163)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:155)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:20)
	at com.intellij.psi.PsiPolyVariantReferenceBase.resolve(PsiPolyVariantReferenceBase.java:46)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:34)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:14)
	at com.intellij.codeInsight.TargetElementUtil.a(TargetElementUtil.java:391)
	at com.intellij.codeInsight.TargetElementUtil.b(TargetElementUtil.java:368)
	at com.intellij.codeInsight.TargetElementUtil.a(TargetElementUtil.java:238)
	at com.intellij.codeInsight.TargetElementUtil.findTargetElement(TargetElementUtil.java:210)
	at com.intellij.codeInsight.daemon.impl.IdentifierHighlighterPass.doCollectInformation(IdentifierHighlighterPass.java:92)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:70)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.a(PassExecutorService.java:438)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1153)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.b(PassExecutorService.java:431)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:556)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:501)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.c(PassExecutorService.java:430)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.d(PassExecutorService.java:406)
	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:142)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:242)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:404)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:165)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)


java.lang.Throwable
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:132)
	at com.intellij.psi.impl.PsiElementBase.notNullChild(PsiElementBase.java:285)
	at me.serce.solidity.lang.psi.impl.SolArrayTypeNameImpl.getTypeName(SolArrayTypeNameImpl.java:49)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:57)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:48)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:84)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:137)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:98)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:121)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:103)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:11)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:120)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:73)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:137)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:98)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:121)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:103)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:11)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt:143)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at me.serce.solidity.lang.types.InferenceKt$type$1.compute(inference.kt:142)
	at com.intellij.psi.util.CachedValuesManager.lambda$getCachedValue$0(CachedValuesManager.java:141)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
	at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:137)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:127)
	at me.serce.solidity.lang.types.InferenceKt.getType(inference.kt:141)
	at me.serce.solidity.lang.resolve.SolResolver.resolveMemberAccess(engine.kt:53)
	at me.serce.solidity.lang.resolve.ref.SolMemberAccessReference.multiResolve(SolUserDefinedTypeNameReference.kt:44)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolve$0(ResolveCache.java:140)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:139)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:163)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:155)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:20)
	at com.intellij.psi.PsiPolyVariantReferenceBase.resolve(PsiPolyVariantReferenceBase.java:46)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:34)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:14)
	at com.intellij.codeInsight.intention.AddAnnotationPsiFix.getContainer(AddAnnotationPsiFix.java:73)
	at com.intellij.codeInsight.intention.impl.AddAnnotationIntention.isAvailable(AddAnnotationIntention.java:52)
	at com.intellij.codeInsight.intention.impl.config.IntentionActionWrapper.isAvailable(IntentionActionWrapper.java:60)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.availableFor(ShowIntentionActionsHandler.java:130)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.a(ShowIntentionsPass.java:314)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.chooseBetweenHostAndInjected(ShowIntentionActionsHandler.java:155)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.getActionsToShow(ShowIntentionsPass.java:313)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.a(ShowIntentionsPass.java:245)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.doCollectInformation(ShowIntentionsPass.java:221)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:70)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.a(PassExecutorService.java:438)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1153)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.b(PassExecutorService.java:431)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:556)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:501)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.c(PassExecutorService.java:430)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.d(PassExecutorService.java:406)
	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:142)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:242)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:404)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:165)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)


java.lang.IllegalStateException: @NotNull method com/intellij/psi/impl/PsiElementBase.notNullChild must not return null
	at com.intellij.psi.impl.PsiElementBase.notNullChild(PsiElementBase.java:287)
	at me.serce.solidity.lang.psi.impl.SolArrayTypeNameImpl.getTypeName(SolArrayTypeNameImpl.java:49)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:57)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:48)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:84)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:137)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:98)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:121)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:103)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:11)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:120)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:73)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:137)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:98)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:121)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:103)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:11)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt:143)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at me.serce.solidity.lang.types.InferenceKt$type$1.compute(inference.kt:142)
	at com.intellij.psi.util.CachedValuesManager.lambda$getCachedValue$0(CachedValuesManager.java:141)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
	at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:137)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:127)
	at me.serce.solidity.lang.types.InferenceKt.getType(inference.kt:141)
	at me.serce.solidity.lang.resolve.SolResolver.resolveMemberAccess(engine.kt:53)
	at me.serce.solidity.lang.resolve.ref.SolMemberAccessReference.multiResolve(SolUserDefinedTypeNameReference.kt:44)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolve$0(ResolveCache.java:140)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:139)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:163)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:155)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:20)
	at com.intellij.psi.PsiPolyVariantReferenceBase.resolve(PsiPolyVariantReferenceBase.java:46)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:34)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:14)
	at com.intellij.codeInsight.intention.AddAnnotationPsiFix.getContainer(AddAnnotationPsiFix.java:73)
	at com.intellij.codeInsight.intention.impl.AddAnnotationIntention.isAvailable(AddAnnotationIntention.java:52)
	at com.intellij.codeInsight.intention.impl.config.IntentionActionWrapper.isAvailable(IntentionActionWrapper.java:60)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.availableFor(ShowIntentionActionsHandler.java:130)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.a(ShowIntentionsPass.java:314)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.chooseBetweenHostAndInjected(ShowIntentionActionsHandler.java:155)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.getActionsToShow(ShowIntentionsPass.java:313)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.a(ShowIntentionsPass.java:245)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.doCollectInformation(ShowIntentionsPass.java:221)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:70)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.a(PassExecutorService.java:438)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1153)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.b(PassExecutorService.java:431)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:556)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:501)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.c(PassExecutorService.java:430)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.d(PassExecutorService.java:406)
	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:142)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:242)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:404)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:165)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)


java.lang.IllegalStateException: @NotNull method com/intellij/psi/impl/PsiElementBase.notNullChild must not return null
	at com.intellij.psi.impl.PsiElementBase.notNullChild(PsiElementBase.java:287)
	at me.serce.solidity.lang.psi.impl.SolArrayTypeNameImpl.getTypeName(SolArrayTypeNameImpl.java:49)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:57)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:48)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:84)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:137)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:98)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:121)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:103)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:11)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:120)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:73)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:137)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:98)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:121)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:103)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:11)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt:143)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at me.serce.solidity.lang.types.InferenceKt$type$1.compute(inference.kt:142)
	at com.intellij.psi.util.CachedValuesManager.lambda$getCachedValue$0(CachedValuesManager.java:141)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
	at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:137)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:127)
	at me.serce.solidity.lang.types.InferenceKt.getType(inference.kt:141)
	at me.serce.solidity.lang.resolve.SolResolver.resolveMemberAccess(engine.kt:53)
	at me.serce.solidity.lang.resolve.ref.SolMemberAccessReference.multiResolve(SolUserDefinedTypeNameReference.kt:44)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolve$0(ResolveCache.java:140)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:139)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:163)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:155)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:20)
	at com.intellij.psi.PsiPolyVariantReferenceBase.resolve(PsiPolyVariantReferenceBase.java:46)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:34)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:14)
	at com.intellij.codeInsight.TargetElementUtil.a(TargetElementUtil.java:391)
	at com.intellij.codeInsight.TargetElementUtil.b(TargetElementUtil.java:368)
	at com.intellij.codeInsight.TargetElementUtil.a(TargetElementUtil.java:238)
	at com.intellij.codeInsight.TargetElementUtil.findTargetElement(TargetElementUtil.java:210)
	at com.intellij.codeInsight.daemon.impl.IdentifierHighlighterPass.doCollectInformation(IdentifierHighlighterPass.java:92)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:70)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.a(PassExecutorService.java:438)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1153)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.b(PassExecutorService.java:431)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:556)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:501)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.c(PassExecutorService.java:430)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.d(PassExecutorService.java:406)
	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:142)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:242)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:404)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:165)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)


java.lang.IllegalStateException: @NotNull method com/intellij/psi/impl/PsiElementBase.notNullChild must not return null
	at com.intellij.psi.impl.PsiElementBase.notNullChild(PsiElementBase.java:287)
	at me.serce.solidity.lang.psi.impl.SolArrayTypeNameImpl.getTypeName(SolArrayTypeNameImpl.java:49)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:57)
	at me.serce.solidity.lang.types.InferenceKt.getSolType(inference.kt:48)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:84)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:137)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:98)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:121)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:103)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:11)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:120)
	at me.serce.solidity.lang.types.InferenceKt.inferDeclType(inference.kt:73)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt:94)
	at me.serce.solidity.lang.types.InferenceKt$inferRefType$1.invoke(inference.kt)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:137)
	at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:98)
	at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:121)
	at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:103)
	at me.serce.solidity.UtilKt.firstOrElse(util.kt:11)
	at me.serce.solidity.lang.types.InferenceKt.inferRefType(inference.kt:96)
	at me.serce.solidity.lang.types.InferenceKt.inferExprType(inference.kt:105)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt:143)
	at me.serce.solidity.lang.types.InferenceKt$type$1$type$1.compute(inference.kt)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at me.serce.solidity.lang.types.InferenceKt$type$1.compute(inference.kt:142)
	at com.intellij.psi.util.CachedValuesManager.lambda$getCachedValue$0(CachedValuesManager.java:141)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
	at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:137)
	at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:127)
	at me.serce.solidity.lang.types.InferenceKt.getType(inference.kt:141)
	at me.serce.solidity.lang.resolve.SolResolver.resolveMemberAccess(engine.kt:53)
	at me.serce.solidity.lang.resolve.ref.SolMemberAccessReference.multiResolve(SolUserDefinedTypeNameReference.kt:44)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:21)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:14)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase$multiResolve$1.resolve(SolReferenceBase.kt:20)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolve$0(ResolveCache.java:140)
	at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:139)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:163)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:155)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.multiResolve(SolReferenceBase.kt:20)
	at com.intellij.psi.PsiPolyVariantReferenceBase.resolve(PsiPolyVariantReferenceBase.java:46)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:34)
	at me.serce.solidity.lang.resolve.ref.SolReferenceBase.resolve(SolReferenceBase.kt:14)
	at com.intellij.codeInsight.intention.AddAnnotationPsiFix.getContainer(AddAnnotationPsiFix.java:73)
	at com.intellij.codeInsight.intention.impl.AddAnnotationIntention.isAvailable(AddAnnotationIntention.java:52)
	at com.intellij.codeInsight.intention.impl.config.IntentionActionWrapper.isAvailable(IntentionActionWrapper.java:60)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.availableFor(ShowIntentionActionsHandler.java:130)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.a(ShowIntentionsPass.java:314)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.chooseBetweenHostAndInjected(ShowIntentionActionsHandler.java:155)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.getActionsToShow(ShowIntentionsPass.java:313)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.a(ShowIntentionsPass.java:245)
	at com.intellij.codeInsight.daemon.impl.ShowIntentionsPass.doCollectInformation(ShowIntentionsPass.java:221)
	at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:70)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.a(PassExecutorService.java:438)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1153)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.b(PassExecutorService.java:431)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:556)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:501)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.c(PassExecutorService.java:430)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.d(PassExecutorService.java:406)
	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:142)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:242)
	at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:404)
	at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:165)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.