Hi Daniil, thank you for explaining that, as most devs with regards to IDEs I am a user and have little insight in the challenges of its inner workings. I have never had the need to use @PackageScope, but the problem I see is that the annotation (in typical Groovy style), can do more than a keyword, due to it supporting parameters to restrict its applicability to e.g. class fields only - so I guess you would have to scan for @PackageScope in any case... Cheers,mg
-------- Ursprüngliche Nachricht --------Von: Daniil Ovchinnikov <daniil.ovchinni...@jetbrains.com> Datum: 15.12.17 14:13 (GMT+01:00) An: MG <mg...@arscreat.com> Betreff: Re: Package specific syntax Each annotation requires resolution, which slows the IDE. With a keyword we can get visibility of members instantly, for example for showing appropriate icon in Project View. We need to resolve _all_ annotations and check if there are annotation collectors just to find that given member doesn’t have @PackageScope. At this point all we need to know is whether containing class of a given member has @PackageScope, and we start to resolve all annotations of a class and so on. — Daniil Ovchinnikov JetBrains jetbrains.com “Drive to develop” On 14 Dec 2017, at 04:11, MG <mg...@arscreat.com> wrote: Why is a keyword better than an annotation from an IDE developer's perspective (considering Groovy already has tons of annotations which more complex semantics than @PackageScope) ? On 13.12.2017 23:14, Daniil Ovchinnikov wrote: This is the best way from IDE perspective. — Daniil Ovchinnikov JetBrains jetbrains.com “Drive to develop" On 14 Dec 2017, at 01:03, Nathan Harvey <nathanwhar...@gmail.com> wrote: In Java, methods and fields use package scope by default. In Groovy, they use public. In order to make something package scope, you have to use the @PackageScope annotation. This makes code look a bit messy but also doesn't seem very intuitive. What if the "package" keyword was able to be applied, in exactly the same way as "public" and "private" are? Example: package void foo() {} -- Sent from: http://groovy.329449.n5.nabble.com/Groovy-Dev-f372993.html