[nem-en] More for completion
Alejandro Serrano
trupill at yahoo.es
Sun Jul 2 17:28:06 CEST 2006
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
More information about the devel-en
mailing list