Points about language support for 292
Rémi Forax
forax at univ-mlv.fr
Fri May 1 05:57:54 PDT 2009
Alex Buckley a écrit :
> Neal Gafter wrote:
>
>> On Thu, Apr 30, 2009 at 3:15 PM, Alex Buckley <Alex.Buckley at sun.com
>> <mailto:Alex.Buckley at sun.com>> wrote:
>>
>> Neal: InvokeDynamic IS now a reference type. Regarding <..> to indicate
>> return type for a dynamic call site, how does C# denote that?
>>
>> It doesn't. A dynamic invocation, from the point of view of C#, returns
>> a value of type dynamic. The hoped-for return type isn't encoded into
>> the invocation.
>>
>
> The utility of a Dynamic type is high. The utility of values of Dynamic
> type is not high, in my view. Coin's support for 292 is limited, and
> does not include general manipulation of non-Java objects in the Java
> language. I respect that you believe the time has come for general
> manipulation of non-C# objects in the C# language.
>
> Alex
>
>
Agree
even if I think that language developers should eat their own dog food.
Question: why do we need to use a type InvokeDynamic ?
The invokedynamic instruction is a function call,
so I propose to use a syntax more close to a function call,
something like:
$aDynamicFunction(arg1, arg2)
Now, the problem of the return type.
I propose the following rules:
- if the dynamic call is the righ part of an assignation, the return type
is the type of the lhs.
int value = $aDynamicFunction(param1, param2) // -> int
- if the dynamic call is prefixed by a cast, the return type is the
type of the cast (note that this rule doesn't exist for generics)
(double)$aDynamicFunction(param1, param2) // -> double
- else the return type is Object.
Rémi
More information about the coin-dev
mailing list