Code Monkey home page Code Monkey logo

jaicf-plugin's People

Contributors

veptechno avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

jaicf-plugin's Issues

Add plugin to IDEA recommendations

IDEA can suggest uninstalled plugins based on project dependencies. It shows a balloon notification with the following text "Recommended plugin available for dependencies '...'".

Use the com.intellij.dependencySupport extension point to do this.

Fix appends with context

Now, if a project contains several appends with context, all transitions refer to the first of them.
Example:

val aScenario = Scenario {
    append("inner2", Scenario { state("opo") })
    fallback { reactions.go("/inner/opo") }
}

val bScenario = Scenario {
    append("inner", Scenario { state("opo") })
    fallback { reactions.go("/inner/opo") }
}

NPE when refactoring

Stacktrace:

java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.collections.CollectionsKt__MutableCollectionsKt.addAll, parameter elements
	at kotlin.collections.CollectionsKt__MutableCollectionsKt.addAll(MutableCollections.kt)
	at kotlin.collections.CollectionsKt__IterablesKt.flatten(Iterables.kt:72)
	at com.justai.jaicf.plugin.scenarios.psi.ScenarioDataService.getScenarios(ScenarioDataService.kt:39)
	at com.justai.jaicf.plugin.scenarios.linker.LinkerKt.getAppendingStates(Linker.kt:31)
	at com.justai.jaicf.plugin.scenarios.transition.TransitionService.transit(TransitionService.kt:33)
	at com.justai.jaicf.plugin.scenarios.transition.TransitionServiceKt.transit(TransitionService.kt:85)
	at com.justai.jaicf.plugin.inspections.DuplicateStateInspection$DuplicateStateVisitor.visitState(DuplicateStateInspection.kt:25)
	at com.justai.jaicf.plugin.inspections.StateVisitor.recursiveEntryIntoState(Visitors.kt:40)
	at com.justai.jaicf.plugin.inspections.StateVisitor.visitFile(Visitors.kt:35)
	at org.jetbrains.kotlin.psi.KtFile.accept(KtFile.kt:232)
	at com.intellij.codeInspection.InspectionEngine.acceptElements(InspectionEngine.java:64)
	at com.intellij.codeInspection.InspectionEngine.createVisitorAndAcceptElements(InspectionEngine.java:55)
	at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.runToolOnElements(LocalInspectionsPass.java:326)
	at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.lambda$visitPriorityElementsAndInit$4(LocalInspectionsPass.java:285)
	at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:159)
	at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:151)
	at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.lambda$visitPriorityElementsAndInit$5(LocalInspectionsPass.java:283)
	at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:130)
	at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:119)
	at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.lambda$visitPriorityElementsAndInit$6(LocalInspectionsPass.java:283)
	at com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:136)
	at com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:149)
	at com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:149)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1078)
	at com.intellij.concurrency.ApplierCompleter.lambda$wrapInReadActionAndIndicator$1(ApplierCompleter.java:92)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:705)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:647)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:63)
	at com.intellij.concurrency.ApplierCompleter.wrapInReadActionAndIndicator(ApplierCompleter.java:104)
	at com.intellij.concurrency.ApplierCompleter.lambda$compute$0(ApplierCompleter.java:83)
	at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:174)
	at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:183)
	at com.intellij.concurrency.ApplierCompleter.compute(ApplierCompleter.java:83)
	at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

How to reproduce:
Start refactoring the project with IDEA tools: change the location of the class through packages.

Support for passing a scenario as the default property value

The code below is not currently supported, but it must work just as if it were append(AppendTestScenario)

class AppScenario(private val entryPoint: Scenario = AppendTestScenario) : Scenario {
    override val model by Scenario {
        append(entryPoint)
    }
}

Fix search exception in IDEA 221

java.lang.Throwable: Must be executed under progress indicator: com.intellij.openapi.progress.EmptyProgressIndicator@2157ebe9. Please see e.g. ProgressManager.runProcess()
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:182)
	at com.intellij.openapi.progress.impl.CoreProgressManager.assertUnderProgress(CoreProgressManager.java:996)
	at com.intellij.psi.impl.search.PsiSearchHelperImpl.processFilesConcurrentlyDespiteWriteActions(PsiSearchHelperImpl.java:428)
	at com.intellij.psi.impl.search.PsiSearchHelperImpl.lambda$processPsiFileRoots$8(PsiSearchHelperImpl.java:397)
	at com.intellij.psi.impl.PsiManagerImpl.runInBatchFilesMode(PsiManagerImpl.java:451)
	at com.intellij.psi.impl.search.PsiSearchHelperImpl.processPsiFileRoots(PsiSearchHelperImpl.java:393)
	at com.intellij.psi.impl.search.PsiSearchHelperImpl.processCandidates(PsiSearchHelperImpl.java:908)
	at com.intellij.psi.impl.search.PsiSearchHelperImpl.processGlobalRequests(PsiSearchHelperImpl.java:892)
	at com.intellij.psi.impl.search.PsiSearchHelperImpl.processGlobalRequestsOptimized(PsiSearchHelperImpl.java:844)
	at com.intellij.psi.impl.search.PsiSearchHelperImpl.processRequests(PsiSearchHelperImpl.java:769)
	at com.intellij.psi.search.SearchRequestQuery.processResults(SearchRequestQuery.java:24)
	at com.intellij.util.AbstractQuery.doProcessResults(AbstractQuery.java:91)
	at com.intellij.util.AbstractQuery.delegateProcessResults(AbstractQuery.java:108)
	at com.intellij.util.MergeQuery.processResults(MergeQuery.java:22)
	at com.intellij.util.AbstractQuery.doProcessResults(AbstractQuery.java:91)
	at com.intellij.util.AbstractQuery.delegateProcessResults(AbstractQuery.java:108)
	at com.intellij.util.UniqueResultsQuery.processResults(UniqueResultsQuery.java:37)
	at com.intellij.util.AbstractQuery.doProcessResults(AbstractQuery.java:91)
	at com.intellij.util.AbstractQuery.forEach(AbstractQuery.java:83)
	at com.intellij.util.AbstractQuery.findAll(AbstractQuery.java:28)
	at com.justai.jaicf.plugin.scenarios.psi.ReferencesSearcherKt.search(ReferencesSearcher.kt:22)
	at com.justai.jaicf.plugin.scenarios.psi.ScenarioDataService$scenariosMap$1.invoke(ScenarioDataService.kt:27)
	at com.justai.jaicf.plugin.scenarios.psi.ScenarioDataService$scenariosMap$1.invoke(ScenarioDataService.kt:25)
	at com.justai.jaicf.plugin.utils.LiveMapByFiles.createCachedValue$lambda-1(CachedValues.kt:58)
	at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:39)
	at com.intellij.util.CachedValueBase.lambda$getValueWithLock$3(CachedValueBase.java:227)
	at com.intellij.util.CachedValueBase.computeData(CachedValueBase.java:42)
	at com.intellij.util.CachedValueBase.lambda$getValueWithLock$4(CachedValueBase.java:227)
	at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:114)
	at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:44)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:228)
	at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:28)
	at com.justai.jaicf.plugin.utils.LiveMapByFiles.get(CachedValues.kt:52)
	at com.justai.jaicf.plugin.scenarios.psi.ScenarioDataService.getScenarios(ScenarioDataService.kt:35)
	at com.justai.jaicf.plugin.scenarios.linker.LocatorKt.getFramingState(Locator.kt:16)
	at com.justai.jaicf.plugin.providers.StateIdentifierReferenceProvider$getReferencesByElement$1.invoke(StateIdentifierReferenceContributor.kt:50)
	at com.justai.jaicf.plugin.providers.StateIdentifierReferenceProvider$getReferencesByElement$1.invoke(StateIdentifierReferenceContributor.kt:48)
	at com.justai.jaicf.plugin.providers.MultiPsiReference.resolve(StateIdentifierReferenceContributor.kt:67)
	at com.justai.jaicf.plugin.providers.MultiPsiReference.resolve(StateIdentifierReferenceContributor.kt:57)
	at com.intellij.codeInsight.TargetElementUtilBase.getReferencedElement(TargetElementUtilBase.java:177)
	at com.intellij.codeInsight.TargetElementUtilBase.doGetReferenceOrReferencedElement(TargetElementUtilBase.java:165)
	at com.intellij.codeInsight.TargetElementUtilBase.getReferenceOrReferencedElement(TargetElementUtilBase.java:210)
	at com.intellij.codeInsight.TargetElementUtilBase.getReferencedElement(TargetElementUtilBase.java:254)
	at com.intellij.codeInsight.TargetElementUtilBase.doFindTargetElement(TargetElementUtilBase.java:233)
	at com.intellij.codeInsight.TargetElementUtilBase.findTargetElement(TargetElementUtilBase.java:298)
	at com.intellij.codeInsight.TargetElementUtil.findTargetElement(TargetElementUtil.java:147)
	at com.intellij.model.psi.impl.TargetsKt.fromTargetEvaluator(targets.kt:173)
	at com.intellij.model.psi.impl.TargetsKt.declarationsOrReferences(targets.kt:134)
	at com.intellij.model.psi.impl.TargetsKt.declaredReferencedData(targets.kt:41)
	at com.intellij.codeInsight.navigation.impl.GtduKt.fromTargetData(gtdu.kt:60)
	at com.intellij.codeInsight.navigation.impl.GtduKt.gotoDeclarationOrUsagesInner(gtdu.kt:56)
	at com.intellij.codeInsight.navigation.impl.GtduKt.access$gotoDeclarationOrUsagesInner(gtdu.kt:1)
	at com.intellij.codeInsight.navigation.impl.GtduKt$gotoDeclarationOrUsages$1.invoke(gtdu.kt:19)
	at com.intellij.codeInsight.navigation.impl.GtduKt$gotoDeclarationOrUsages$1.invoke(gtdu.kt)
	at com.intellij.codeInsight.navigation.impl.CommonKt.processInjectionThenHost(common.kt:14)
	at com.intellij.codeInsight.navigation.impl.GtduKt.gotoDeclarationOrUsages(gtdu.kt:19)
	at com.intellij.codeInsight.navigation.actions.GotoDeclarationOrUsageHandler2.gotoDeclarationOrUsages(GotoDeclarationOrUsageHandler2.kt:31)
	at com.intellij.codeInsight.navigation.actions.GotoDeclarationOrUsageHandler2.getCtrlMouseData(GotoDeclarationOrUsageHandler2.kt:41)
	at com.intellij.codeInsight.navigation.actions.GotoDeclarationAction.getCtrlMouseData(GotoDeclarationAction.java:95)
	at com.intellij.codeInsight.navigation.CtrlMouseHandler2$computeInReadAction$1.invoke(CtrlMouseHandler.kt:235)
	at com.intellij.codeInsight.navigation.CtrlMouseHandler2$computeInReadAction$1.invoke(CtrlMouseHandler.kt:77)
	at com.intellij.lang.documentation.ide.impl.DocumentationTargetHoverInfoKt.injectedThenHost(DocumentationTargetHoverInfo.kt:76)
	at com.intellij.codeInsight.navigation.CtrlMouseHandler2.computeInReadAction(CtrlMouseHandler.kt:234)
	at com.intellij.codeInsight.navigation.CtrlMouseHandler2.access$computeInReadAction(CtrlMouseHandler.kt:77)
	at com.intellij.codeInsight.navigation.CtrlMouseHandler2$compute$2$1.invoke(CtrlMouseHandler.kt:222)
	at com.intellij.codeInsight.navigation.CtrlMouseHandler2$compute$2$1.invoke(CtrlMouseHandler.kt:77)
	at com.intellij.openapi.application.rw.InternalReadAction.insideReadAction(InternalReadAction.kt:96)
	at com.intellij.openapi.application.rw.InternalReadAction.access$insideReadAction(InternalReadAction.kt:13)
	at com.intellij.openapi.application.rw.InternalReadAction$tryReadCancellable$1.invoke(InternalReadAction.kt:81)
	at com.intellij.openapi.application.rw.InternalReadAction$tryReadCancellable$1.invoke(InternalReadAction.kt:13)
	at com.intellij.openapi.progress.CancellationKt$sam$com_intellij_openapi_util_ThrowableComputable$0.compute(cancellation.kt)
	at com.intellij.openapi.progress.Cancellation.withJob(Cancellation.java:60)
	at com.intellij.openapi.progress.CancellationKt.withJob(cancellation.kt:14)
	at com.intellij.openapi.progress.CancellationKt.executeWithJobAndCompleteIt(cancellation.kt:111)
	at com.intellij.openapi.application.rw.CancellableReadActionKt$cancellableReadActionInternal$2$1.run(cancellableReadAction.kt:34)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1152)
	at com.intellij.openapi.application.rw.CancellableReadActionKt$cancellableReadActionInternal$2.run(cancellableReadAction.kt:32)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:158)
	at com.intellij.openapi.application.rw.CancellableReadActionKt.cancellableReadActionInternal(cancellableReadAction.kt:30)
	at com.intellij.openapi.application.rw.InternalReadAction.tryReadCancellable(InternalReadAction.kt:80)
	at com.intellij.openapi.application.rw.InternalReadAction.access$tryReadCancellable(InternalReadAction.kt:13)
	at com.intellij.openapi.application.rw.InternalReadAction$tryReadAction$2.invoke(InternalReadAction.kt:66)
	at com.intellij.openapi.application.rw.InternalReadAction$tryReadAction$2.invoke(InternalReadAction.kt:13)
	at com.intellij.openapi.progress.CancellationKt$sam$com_intellij_openapi_util_ThrowableComputable$0.compute(cancellation.kt)
	at com.intellij.openapi.progress.Cancellation.withJob(Cancellation.java:60)
	at com.intellij.openapi.progress.CancellationKt.withJob(cancellation.kt:14)
	at com.intellij.openapi.progress.CoroutinesKt.blockingContext(coroutines.kt:138)
	at com.intellij.openapi.application.rw.InternalReadAction.tryReadAction(InternalReadAction.kt:61)
	at com.intellij.openapi.application.rw.InternalReadAction.readLoop(InternalReadAction.kt:53)
	at com.intellij.openapi.application.rw.InternalReadAction.access$readLoop(InternalReadAction.kt:13)
	at com.intellij.openapi.application.rw.InternalReadAction$runReadAction$4.invokeSuspend(InternalReadAction.kt:33)
	at com.intellij.openapi.application.rw.InternalReadAction$runReadAction$4.invoke(InternalReadAction.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
	at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
	at com.intellij.openapi.application.rw.InternalReadAction.runReadAction(InternalReadAction.kt:32)
	at com.intellij.openapi.application.rw.PlatformReadActionSupport.executeReadAction(PlatformReadActionSupport.kt:24)
	at com.intellij.openapi.application.CoroutinesKt.constrainedReadAction(coroutines.kt:50)
	at com.intellij.codeInsight.navigation.CtrlMouseHandler2$compute$2.invokeSuspend(CtrlMouseHandler.kt:221)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

Improve performance for large projects

Now the plugin is fast for small and medium projects, but for large projects it is slow.
My suggestion is to replace jetbrains CacheValues with proprietary ones and not clear the cache in unnecessary cases.

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.