D issues are now tracked on GitHub. This Bugzilla instance remains as a read-only archive.
Issue 7858 - __traits(getOverloads) returns incorrect symbol
Summary: __traits(getOverloads) returns incorrect symbol
Status: RESOLVED FIXED
Alias: None
Product: D
Classification: Unclassified
Component: dmd (show other issues)
Version: D2
Hardware: All All
: P2 regression
Assignee: No Owner
URL:
Keywords: pull, wrong-code
Depends on:
Blocks:
 
Reported: 2012-04-08 09:59 UTC by Kenji Hara
Modified: 2012-04-08 11:34 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description Kenji Hara 2012-04-08 09:59:24 UTC
Following test should compile.
----
class C
{
  final void ffunc(){}
  final void ffunc(int){}

  void vfunc(){}
  void vfunc(int){}

  abstract void afunc();
  abstract void afunc(int);

  static void sfunc(){}
  static void sfunc(int){}
}

static assert(
  __traits(isFinalFunction, C.ffunc) ==
  __traits(isFinalFunction, __traits(getOverloads, C, "ffunc")[0]));    // NG
static assert(
  __traits(isVirtualFunction, C.vfunc) ==
  __traits(isVirtualFunction, __traits(getOverloads, C, "vfunc")[0]));  // NG
static assert(
  __traits(isVirtualMethod, C.vfunc) ==
  __traits(isVirtualMethod, __traits(getOverloads, C, "vfunc")[0]));    // NG
static assert(
  __traits(isAbstractFunction, C.afunc) ==
  __traits(isAbstractFunction, __traits(getOverloads, C, "afunc")[0])); // OK
static assert(
  __traits(isStaticFunction, C.sfunc) ==
  __traits(isStaticFunction, __traits(getOverloads, C, "sfunc")[0]));   // OK

static assert(__traits(isSame,
  C.ffunc, __traits(getOverloads, C, "ffunc")[0]));	// NG
static assert(__traits(isSame,
  C.vfunc, __traits(getOverloads, C, "vfunc")[0]));	// NG
static assert(__traits(isSame,
  C.afunc, __traits(getOverloads, C, "afunc")[0]));	// NG
static assert(__traits(isSame,
  C.sfunc, __traits(getOverloads, C, "sfunc")[0]));	// NG
----

This issue was caused by fixing bug 7552.
Comment 2 github-bugzilla 2012-04-08 10:13:12 UTC
Commits pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/68dc8133e44ad6cecf414c53e3210aacbd87526f
fix Issue 7858 - __traits(getOverloads) returns incorrect symbol

https://github.com/D-Programming-Language/dmd/commit/f248047ae80d922d9093cddc5a5717624e7043ef
Merge pull request #869 from 9rnsr/fix7858

Issue 7858 - __traits(getOverloads) returns incorrect symbol