[nem-en] More for completion

Kamil Skalski kamil.skalski at gmail.com
Sun Jul 2 17:31:10 CEST 2006


It refers to the location of whole expression 'obj.field'. You could
get the place of '.' by comparing location of expr  and obj - or
actually looking where obj's Location finishes.

2006/7/2, Alejandro Serrano <trupill at yahoo.es>:
> What does this 'Location' refer to? The idea is to use the method inside
> for the MonoDevelop refactorer, so I would need to get:
>
> obj.(just here)Field
>
> So refactoring could happen in the terms of MD.
>
> Kamil Skalski escribió:
> > Yes, we should allow distinguishing between read and assign places, as
> > it is very common to search only one kind of those operations.
> >
> > In this example it's just 'expr.Location', becasue this
> > TExpr.FieldMember is describing a node in program tree for expression:
> > 'obj.(fld : name)'
> >
> > 2006/7/2, Alejandro Serrano <trupill at yahoo.es>:
> >> Well, yes, I think I have not found the best example. I've created two
> >> overloads: one with Location and one which doesn't not have a Location
> >> parameter. Just another example (typing/Typer2.n, line 834)
> >>
> >>         | TExpr.FieldMember (obj, fld) =>
> >>           if (ctx %&& Context.NeedLValue)
> >>             fld.HasBeenAssigned = true;
> >>           else
> >>             fld.HasBeenUsed = true;
> >>           TExpr.FieldMember (Walk (obj), fld)
> >>
> >> First of all, it seems that I will need both a MarkAsUsed and a
> >> MarkAsAssigned :-). Secondly, how do I retrieve the exact Location
> >> there? Maybe the answer is obvious, but I can't find it.
> >>
> >> Thanks again
> >>
> >> Kamil Skalski escribió:
> >> > This particular instance of MarkAsUsed seems like a 'shut up' mark for
> >> > the compiler warnings. This is quite common to disable warnings for
> >> > generated code, as user does not have direct influence on how to fix
> >> > the warning.
> >> >
> >> > Isn't it feasible to use Location.Default here? The rationale for such
> >> > hack is that you won't search for references of this generated member
> >> > anyways.
> >> >
> >> > 2006/7/2, Alejandro Serrano <trupill at yahoo.es>:
> >> >> Kamil Skalski escribió:
> >> >> > bash-3.00$ cd nemerle/ncc/
> >> >> > bash-3.00$ ./g HasBeenUsed
> >> >> > external/LibrariesLoader.n:1102:      public override HasBeenUsed :
> >> >> bool
> >> >> > [...]
> >> >> > 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.
> >> >> Hi again,
> >> >> Now I have some time, I'm trying to implement these MarkAsUsed
> >> method.
> >> >> However, I've got a big problem: I don't know where to find the
> >> location
> >> >> most of the times. For example, in generation/Typer3.n (line 789)
> >> >>
> >> >>       def rewrite (expr : TExpr) {
> >> >>         | TryFinally (body, handler) =>
> >> >>           def fld = clo_type.DefineAndReturn (<[ decl:
> >> >>             mutable $(Macros.NewSymbol ("finally_needed") : name) :
> >> >> bool;
> >> >>           ]>) :> IField;
> >> >>           fld.HasBeenAssigned = true;
> >> >>           fld.HasBeenUsed = true;
> >> >>           def fldref = TExpr.FieldMember (InternalType.Boolean,
> >> thisref,
> >> >> fld);
> >> >>
> >> >> How can I know where the reference is located so I can call the
> >> >> MarkAsUsed (IMember, Location) method?
> >> >>
> >> >> Thanks in advance,
> >> >> Alejandro Serrano "Serras"
> >> >>
> >>
> >>
> >>
> >>
> >> ______________________________________________
> >> 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
> >>
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > https://nemerle.org/mailman/listinfo/devel-en
> >
>
>
>
> ______________________________________________
> 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