RE: [sv-ec] Where can you use "this"?

From: Francoise Martinolle <fm_at_.....>
Date: Mon Sep 08 2008 - 09:22:57 PDT
Gordon,

I am happy about your explanation of the current LRM text.
I am in agreement with the concept that "this" is an implicit argument
of
non static methods and I would not request a change in the LRM to
support
its use to initialize properties.

Francoise
    '

-----Original Message-----
From: Gordon Vreugdenhil [mailto:gordonv@model.com] 
Sent: Monday, September 08, 2008 12:11 PM
To: Francoise Martinolle
Cc: sv-ec@eda.org
Subject: Re: [sv-ec] Where can you use "this"?


Francoise,

I don't believe that you can use "this" to initialize class properties
other than within the constructor.  So the example you have would not be
legal in the current LRM.

This question relates indirectly to other discussions related to
defaults of methods.  For example, can you have something like the
following:
    function void new (MyType me = this);
    endfuncion

I'd like the answer to be consistent with the answer to the legality of
the following:
    function void new (int a = 1, int b = a);
    endfuncion


My view (reflected indirectly by the LRM) is that "this" behaves like an
implicit formal to all non-static methods which is why you can't use it
for an initialization expression.  The use of "this" as even a default
would then be related to the question of using other formals in default
expressions.

The point has been made in the past that the current LRM requires that
defaults be resolved in the context of the scope containing the routine
so I think that current LRM wording would most consistently be treated
as disallowing the use of "this" even as the default of task/function
formal.

I would not be opposed to relaxing the rules for defaults nor would I be
opposed to allowing "this" as an initializer for a non-static property.
But I do think that the current LRM disallows both and that such a
change would have to be in the next PAR.

Gord.


Francoise Martinolle wrote:
> The LRM says that you can only use "this" within non static class
methods.
> But it seems that we should be able to write to use it to initialize 
> automatic class properties.
> Should the LRM test be fixed?
>  
> module top;
>   class C;
>      C m = this;
>   endclass
> endmodule
>  
> 
> --
> This message has been scanned for viruses and dangerous content by 
> *MailScanner* <http://www.mailscanner.info/>, and is believed to be 
> clean.

--
--------------------------------------------------------------------
Gordon Vreugdenhil                                503-685-0808
Model Technology (Mentor Graphics)                gordonv@model.com


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Mon Sep 8 09:24:11 2008

This archive was generated by hypermail 2.1.8 : Mon Sep 08 2008 - 09:24:26 PDT