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

            
          
        
      
      

    
    

  


Reply via email to