Perl5-IDEA icon indicating copy to clipboard operation
Perl5-IDEA copied to clipboard

Process `@{namespace}::EXPORT` correctly

Open blindpirate opened this issue 1 year ago • 4 comments

Fixes https://github.com/Camelcade/Perl5-IDEA/issues/2494

Currently, only @EXPORT = ... can be recognized. This PR adds support for @{namespace}::EXPORT = ....

This is how it works:

image

blindpirate avatar Sep 04 '24 06:09 blindpirate

Will be able to check this on the weekend, thank you.

hurricup avatar Sep 04 '24 06:09 hurricup

I would also recommend to run all tests configuration (require some local setup though), now we have

2024-09-04T07:05:47.4238555Z     Caused by: java.lang.NullPointerException: Cannot invoke "com.intellij.psi.PsiElement.getText()" because the return value of "com.intellij.psi.PsiElement.getFirstChild()" is null
2024-09-04T07:05:47.4241216Z     	at com.perl5.lang.perl.psi.mixins.PerlNamespaceDefinitionMixin$ExporterInfo.extractExport(PerlNamespaceDefinitionMixin.java:256)
2024-09-04T07:05:47.4243368Z     	at com.perl5.lang.perl.psi.mixins.PerlNamespaceDefinitionMixin$ExporterInfo.process(PerlNamespaceDefinitionMixin.java:273)
2024-09-04T07:05:47.4245433Z     	at com.perl5.lang.perl.psi.mixins.PerlNamespaceDefinitionMixin$ExporterInfo.process(PerlNamespaceDefinitionMixin.java:249)
2024-09-04T07:05:47.4247323Z     	at com.perl5.lang.perl.psi.utils.PerlPsiUtil.processNamespaceStatements(PerlPsiUtil.java:429)
2024-09-04T07:05:47.4249027Z     	at com.perl5.lang.perl.psi.utils.PerlPsiUtil.processNamespaceStatements(PerlPsiUtil.java:432)
2024-09-04T07:05:47.4250933Z     	at com.perl5.lang.perl.psi.mixins.PerlNamespaceDefinitionMixin.computeExporterInfo(PerlNamespaceDefinitionMixin.java:196)
2024-09-04T07:05:47.4252730Z     	at com.intellij.openapi.util.ClearableLazyValue$1.compute(ClearableLazyValue.java:16)
2024-09-04T07:05:47.4254264Z     	at com.intellij.openapi.util.ClearableLazyValue.getValue(ClearableLazyValue.java:43)
2024-09-04T07:05:47.4256129Z     	at com.perl5.lang.perl.psi.mixins.PerlNamespaceDefinitionMixin.getExporterInfo(PerlNamespaceDefinitionMixin.java:191)
2024-09-04T07:05:47.4258561Z     	at com.perl5.lang.perl.psi.mixins.PerlNamespaceDefinitionMixin.getEXPORT(PerlNamespaceDefinitionMixin.java:158)
2024-09-04T07:05:47.4261120Z     	at com.perl5.lang.perl.psi.stubs.namespaces.PerlNamespaceDefinitionData.<init>(PerlNamespaceDefinitionData.java:60)
2024-09-04T07:05:47.4263151Z     	at com.perl5.lang.perl.psi.stubs.namespaces.PerlNamespaceDefinitionData.<init>(PerlNamespaceDefinitionData.java:46)
2024-09-04T07:05:47.4265218Z     	at com.perl5.lang.perl.psi.stubs.namespaces.PerlNamespaceDefinitionElementType.createStub(PerlNamespaceDefinitionElementType.java:60)
2024-09-04T07:05:47.4268029Z     	at com.perl5.lang.perl.psi.stubs.namespaces.PerlNamespaceDefinitionElementType.createStub(PerlNamespaceDefinitionElementType.java:38)
2024-09-04T07:05:47.4270163Z     	at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.createStub(DefaultStubBuilder.java:81)
2024-09-04T07:05:47.4272085Z     	at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.visitNode(DefaultStubBuilder.java:58)
2024-09-04T07:05:47.4274371Z     	at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.buildStubTree(DefaultStubBuilder.java:53)
2024-09-04T07:05:47.4276173Z     	at com.intellij.psi.stubs.DefaultStubBuilder.buildStubTreeFor(DefaultStubBuilder.java:31)
2024-09-04T07:05:47.4277716Z     	at com.intellij.psi.stubs.DefaultStubBuilder.buildStubTree(DefaultStubBuilder.java:22)
2024-09-04T07:05:47.4279193Z     	at com.intellij.psi.stubs.StubTreeBuilder.lambda$buildStubTree$1(StubTreeBuilder.java:142)
2024-09-04T07:05:47.4280166Z     	at com.intellij.psi.stubs.StubTreeBuilder.handleStubBuilderException(StubTreeBuilder.java:98)

hurricup avatar Sep 04 '24 07:09 hurricup

There is another corner case fixed in this PR, which was not supported before::

use subs our @EXPORT_OK = qw(
        opset opset_to_hex opdump
);

Though this use subs seems redundant?

blindpirate avatar Sep 07 '24 00:09 blindpirate

god, i can't look at my own code without tears after 7 years. but this is probably a good thing.

hurricup avatar Sep 07 '24 13:09 hurricup