www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 1279] New: const/invariant functions don't accept const/invariant return types

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1279

           Summary: const/invariant functions don't accept const/invariant
                    return types
           Product: D
           Version: 2.000
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Keywords: rejects-valid
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: kamm incasoftware.de


This fails to compile

class Foo
{
  int x;

  invariant invariant(int)* geti() // line 6
  { return &x;  }

  const const(int)* getc() // line 12
  { return &x;  
  } // line 15
}

with the errors
invartest.d(6): Declaration expected, not '('
invartest.d(12): Declaration expected, not '('
invartest.d(15): unrecognized declaration.

Putting the return types into aliases fixes the problem:

alias invariant(int)* RT_I;
invariant RT_I geti() {...}

alias const(int)* RT_C;
const RT_C getc() {...}

compiles.


-- 
Jun 19 2007
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1279


jarrett.billingsley gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jarrett.billingsley gmail.co
                   |                            |m





*** Bug 1281 has been marked as a duplicate of this bug. ***


-- 
Jun 19 2007
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1279


brunodomedeiros+bugz gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |brunodomedeiros+bugz gmail.c
                   |                            |om





Nor even variables declared at module scope:
---- ----
  module mod;
  invariant(char)[] p;
----
mod.d(2): Declaration expected, not '('


-- 
Jun 22 2007
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1279


kamm incasoftware.de changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED





Fixed in DMD 2.001


-- 
Jun 27 2007