[nem-en] More for completion

Kamil Skalski kamil.skalski at gmail.com
Wed Jun 14 18:32:21 CEST 2006


bash-3.00$ cd nemerle/ncc/
bash-3.00$ ./g HasBeenUsed
external/LibrariesLoader.n:1102:      public override HasBeenUsed : bool
external/LibrariesLoader.n:1471:      public HasBeenUsed : bool
external/LibrariesLoader.n:1661:      public HasBeenUsed : bool
external/LibrariesLoader.n:1816:      public HasBeenUsed : bool
external/LibrariesLoader.n:2002:      public HasBeenUsed : bool
generation/ImplementsWrapperMaker.n:121:      meth.HasBeenUsed = true;
generation/Typer3.n:789:          fld.HasBeenUsed = true;
generation/Typer3.n:967:        clo_type.HasBeenUsed = true;
hierarchy/BuiltinMethod.n:176:    public HasBeenUsed : bool
hierarchy/ClassMembers.n:197:  public virtual HasBeenUsed : bool
hierarchy/ClassMembers.n:202:      declaring_type.HasBeenUsed = value
hierarchy/ClassMembers.n:442:      HasBeenUsed = HasBeenUsed || value;
hierarchy/ClassMembers.n:566:  public override HasBeenUsed : bool {
hierarchy/ClassMembers.n:568:      base.HasBeenUsed = value;
hierarchy/ClassMembers.n:571:      when (setter != null)
setter.HasBeenUsed = value;
hierarchy/ClassMembers.n:572:      when (getter != null)
getter.HasBeenUsed = value;
hierarchy/ClassMembers.n:919:      HasBeenUsed = true
hierarchy/ClassMembers.n:1122:    remover.HasBeenUsed = true;
hierarchy/TypeBuilder.n:354:  public override HasBeenUsed : bool
hierarchy/TypeBuilder.n:360:        enclosing_type.HasBeenUsed = value
hierarchy/TypeBuilder.n:2090:                    meth.HasBeenUsed = true;
hierarchy/TypeBuilder.n:2117:          foreach (mem in impl')
mem.HasBeenUsed = true;
hierarchy/TypeBuilder.n:2150:                  meth.HasBeenUsed = true;
hierarchy/TypeBuilder.n:2164:                impl.HasBeenUsed = true;
hierarchy/TypeBuilder.n:2428:      when (!(HasBeenUsed || is_variant
|| IsAlias))
hierarchy/TypeBuilder.n:2436:            if (f.HasBeenUsed)
hierarchy/TypeBuilder.n:2445:          when (!member.HasBeenUsed)
hierarchy/TypeBuilder.n:2493:          m.HasBeenUsed = true
hierarchy/TypeBuilder.n:2528:              abstract_meth.HasBeenUsed = true;
hierarchy/TypeBuilder.n:2529:              meth.HasBeenUsed = true
hierarchy/TypeInfo.n:89:  HasBeenUsed : bool { get; set; } // for the
'unused' warnings
hierarchy/TypeInfo.n:774:  public abstract HasBeenUsed : bool { get;
set; } // for the 'unused' warnings
typing/ConstantFolder.n:275:      decl_type.HasBeenUsed = true;
typing/ConstantFolder.n:282:      field.HasBeenUsed = true;
typing/ConstantFolder.n:293:      decl_type.HasBeenUsed = true;
typing/ConstantFolder.n:294:      field.HasBeenUsed = true;
typing/TyVarEnv.n:345:            ti.HasBeenUsed = true;
typing/Typer-PatternTyper.n:293:
field.HasBeenUsed = true;
typing/Typer2.n:318:                      ev_meth.HasBeenUsed = true;
typing/Typer2.n:626:            sr.mem.HasBeenUsed = true;
typing/Typer2.n:804:            | _ => mem.HasBeenUsed = true;
typing/Typer2.n:830:          (expr.MType :>
MType.Class).tycon.HasBeenUsed = true;
typing/Typer2.n:838:            fld.HasBeenUsed = true;
typing/Typer2.n:843:          mem.HasBeenUsed = true;
typing/Typer2.n:848:          prop.HasBeenUsed = true;
typing/Typer2.n:875:          prop.HasBeenUsed = true;
typing/Typer2.n:891:          ev.HasBeenUsed = true;
typing/Typer2.n:906:          ev.HasBeenUsed = true;
typing/Typer2.n:920:          meth.HasBeenUsed = true;
typing/Typer2.n:1211:          meth.HasBeenUsed = true;

Probably all the assignments to HasBeenUsed should be changed to some
kind of method
ManagerClass.MarkAsUsed (IMember, Location), which could be then
overriden in completion engine to catch all uses of given member.
Then you would need to run the whole typing step for all methods.


2006/6/14, Alejandro Serrano <trupill at yahoo.es>:
> Kamil Skalski escribió:
> > We could plug into the place where members and classes are marked as
> > "used", I guess it is in Typer2.n
> > The main problem with this is performance, since finding all
> > references means simply performing full analysis of all code in all
> > methods, which is quite slow for larger projects.
> >
> However, it is needed for IDE integration. At first al least,
> performance is not the key point.
> This method should stay outside of normal completion, instead it should
> take a TypeInfo or IMember and return the list of Locations (filename,
> column, line) where there is a reference. Is it easy to do it?
>
>
> ______________________________________________
> LLama Gratis a cualquier PC del Mundo.
> Llamadas a fijos y móviles desde 1 céntimo por minuto.
> http://es.voice.yahoo.com
>
>
> _______________________________________________
> https://nemerle.org/mailman/listinfo/devel-en
>


-- 
Kamil Skalski
http://nazgul.omega.pl


More information about the devel-en mailing list