[Issue 3934] Some untidy attributes

2019-07-13 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=3934

Mathias LANG  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||pro.mathias.l...@gmail.com
 Resolution|--- |INVALID

--- Comment #29 from Mathias LANG  ---
There are way too many examples (some of which have been addressed, many still
valid) for this to be actionable. A proper proposal would most likely take a
lot of time and go through the DIP process, as it is a fundamental change to
the grammar (regardless of its validity).

Trivial items such as protection attributes on class inheritance and redundant
attributes have been addressed.

Some items are also documented here:
https://github.com/Hackerpilot/Idiotmatic-D/blob/master/idiotmatic.d

> I like the strictness of the Java compiler, it makes sure your attributes are 
> all correct and meaningful, this helps avoid possible bugs.

To address this specific point: DMD being lax, while unsettling to some, is
also great for generic code. There are quite a lot of cases where DMD being
stricter would result in worst code because it would require some special
casing in generic code.

Closing as INVALID.

--


[Issue 3934] Some untidy attributes

2014-08-14 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=3934

Ivan Kazmenko ga...@mail.ru changed:

   What|Removed |Added

   See Also||https://issues.dlang.org/sh
   ||ow_bug.cgi?id=12638

--


[Issue 3934] Some untidy attributes

2012-10-07 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #28 from bearophile_h...@eml.cc 2012-10-07 05:48:44 PDT ---
struct Foo {
protected void bar() {}
}
void main() {}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2012-09-08 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #27 from bearophile_h...@eml.cc 2012-09-08 07:51:04 PDT ---
Found by Ellery Newcomer:

alias enum int e;
void main() {}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2012-01-08 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #25 from bearophile_h...@eml.cc 2012-01-08 07:09:32 PST ---
By mleise on IRC #D:


struct Foo {
void bar() const const const {}
}
void main() {}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2012-01-08 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #26 from bearophile_h...@eml.cc 2012-01-08 07:22:14 PST ---
By mleise on IRC #D:


class Base {
abstract void foo();
}
class Ext : Base {
override void foo(); // override should require an implementation
}
void main() {}


If uncaught by the compiler this causes a linker error.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2011-07-24 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #20 from bearophile_h...@eml.cc 2011-07-24 05:51:32 PDT ---
This is accepted by DMD 2.054, but if it's not meaningful in D then I suggest
to statically disallow it, as the other examples:


class Foo {}
class Bar : public Foo {}
void main() {}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2011-07-24 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #21 from Stewart Gordon s...@iname.com 2011-07-24 07:38:37 PDT ---
(In reply to comment #20)
 This is accepted by DMD 2.054, but if it's not meaningful in D then I suggest
 to statically disallow it, as the other examples:
 
 class Foo {}
 class Bar : public Foo {}
 void main() {}

There are no attributes as such in your example.  And I don't see anything that
isn't meaningful.  So what do you mean?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2011-07-24 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934


klickverbot c...@klickverbot.at changed:

   What|Removed |Added

 CC||c...@klickverbot.at


--- Comment #22 from klickverbot c...@klickverbot.at 2011-07-24 07:42:16 PDT 
---
(In reply to comment #21)
 (In reply to comment #20)
  class Foo {}
  class Bar : public Foo {}
  void main() {}
 
 There are no attributes as such in your example.  And I don't see anything 
 that
 isn't meaningful.  So what do you mean?

I think bearophile is referring to the �public� protection attribute in the
SuperClass. This is explicitly allowed by the grammar, but I don't know off
hand if it actually has any effect in the current implementation, other than
giving C++ programmers a wrong sense of coziness maybe. ;)

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2011-07-24 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #23 from Stewart Gordon s...@iname.com 2011-07-24 07:54:03 PDT ---
(In reply to comment #22)
 (In reply to comment #21)
 (In reply to comment #20)
 class Foo {}
 class Bar : public Foo {}
 void main() {}
 
 There are no attributes as such in your example.  And I don't see 
 anything that isn't meaningful.  So what do you mean?
 
 I think bearophile is referring to the �public� protection attribute in the
 SuperClass. This is explicitly allowed by the grammar, but I don't know off
 hand if it actually has any effect in the current implementation, other than
 giving C++ programmers a wrong sense of coziness maybe. ;)

Therein lies my point - it isn't an attribute as such, and it isn't
meaningless.  It means the same as in C++, though it doesn't make sense to have
the feature in D.  But this point is covered by issue 177.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2011-07-24 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #24 from kenn...@gmail.com 2011-07-24 09:09:15 PDT ---
(In reply to comment #20)
 This is accepted by DMD 2.054, but if it's not meaningful in D then I suggest
 to statically disallow it, as the other examples:
 
 
 class Foo {}
 class Bar : public Foo {}
 void main() {}

Bug 177, Bug 5299.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2011-01-23 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #16 from bearophile_h...@eml.cc 2011-01-23 07:18:39 PST ---
This shows something strange, dmd 2.051:

const struct Foo1 { int* p; }
struct Foo2 { int* p; }
void bar1(Foo1 f1) {}
void bar2(Foo2 f2) {}
void main() {
const f1 = Foo1();
bar1(f1); // no error
const f2 = Foo2();
bar2(f2); // error
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2011-01-23 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #17 from bearophile_h...@eml.cc 2011-01-23 09:26:37 PST ---
(In reply to comment #16)
 This shows something strange, dmd 2.051:

According to Mafi that code is correct:
http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.learnarticle_id=24058

 I think it's absolutely correct. Look: Foo3 is declared as const
 struct meaning all it's members are const. We are passing a struct
 like that to bar3:
  const Foo3 { const int* p}
 which is implicitely converted to:
  Foo3 { const int* p } //not ref !!
 Because it's not ref you can't manipulate the original struct anyways
 and the pointer is still const. As long as you don't cast you cannot
 change what the pointer points to so this implicit conversion is
 correct IMO.
 It's like const(T[]) = const(T)[] .

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2010-11-08 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #13 from bearophile_h...@eml.cc 2010-11-08 03:24:30 PST ---
This is C# code:

class Foo {}
public class Test : Foo {
public static void Main() {}
}


The C# compiler gives this error:
prog.cs(2,14): error CS0060: Inconsistent accessibility: base class `Foo' is
less accessible than class `Test'


While the D 2.050 compiler gives no errors with this code:

private class Foo {}
public class Bar : Foo {}
void main() {}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2010-11-08 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #14 from bearophile_h...@eml.cc 2010-11-08 04:19:31 PST ---
This bug is now fixed:

auto pure foo() {
return 1;
}
pure void bar() {
foo();
}
void main() {}


DMD 2.050 gives the error:

test.d(5): Error: pure function 'bar' cannot call impure function 'foo'

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2010-11-08 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #15 from bearophile_h...@eml.cc 2010-11-08 04:38:03 PST ---
(In reply to comment #14)
 This bug is now fixed:

Ignore comment #14, the bug is not fixed, sorry.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2010-11-05 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #12 from bearophile_h...@eml.cc 2010-11-05 11:17:28 PDT ---
See the closed bug 5171 for code that may be disallowed statically:


class A {
@disable override equals_t opEquals(Object other) {
return false;
}
}

void main() {
auto a = new A();
auto b = new A();

if(a == b)
assert(0);
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2010-09-26 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #11 from bearophile_h...@eml.cc 2010-09-26 10:40:03 PDT ---
This compiles with no errors with dmd 2.049, but I'd like a compile-time error
similar to manifest constants are always static:


void foo() {
static enum x = 10;
}
void main() {}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2010-09-21 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #10 from bearophile_h...@eml.cc 2010-09-21 13:28:24 PDT ---
Structs can't be subclassed, so protected struct fields seem a bug. This
compiles with dmd 2.049:


struct Foo {
protected int x;
}
void main() {}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2010-08-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #8 from bearophile_h...@eml.cc 2010-08-19 06:14:56 PDT ---
From bernardh on IRC, this program compiles:

auto scope shared import std.stdio;
void main() {}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2010-08-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #9 from bearophile_h...@eml.cc 2010-08-19 09:11:44 PDT ---
This D2 program compiles and runs with DMD 2.048 with no errors, but I think
the compiler has to flag this usage of the 'private final' attributes as
incorrect:


import std.c.stdio: puts;
class Base {
 private final ~this() { puts(Base.~this); }
}
class Derived : Base {
private final ~this() { puts(Derived.~this); }
}
void main() {
new Derived();
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2010-08-17 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #7 from bearophile_h...@eml.cc 2010-08-17 06:07:58 PDT ---
From Simen kjaeraas:

__gshared struct foo {
int n;
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2010-06-30 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #4 from bearophile_h...@eml.cc 2010-06-30 13:14:48 PDT ---
One from Leopold Walkling, this compiles:

auto void main() {}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2010-06-30 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #5 from Stewart Gordon s...@iname.com 2010-06-30 16:33:29 PDT ---
I certainly call that a bug.

Partly a consequence of auto being an attribute rather than a placeholder for a
type, though this seems to be partly for backward compatibility with the old
meaning of auto.  Either way, it's an inapplicable attribute and one that ought
not to be accepted.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2010-06-15 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #3 from bearophile_h...@eml.cc 2010-06-15 17:10:04 PDT ---
This too is wrong (this compiles with dmd v2.047):


struct Foo {
static invariant() {}
}
void main() {}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2010-05-30 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934


Stewart Gordon s...@iname.com changed:

   What|Removed |Added

 CC||s...@iname.com


--- Comment #2 from Stewart Gordon s...@iname.com 2010-05-30 14:21:25 PDT ---
This seems to be partly a duplicate of issue 3118.

Without a clear spec on the matter, it's hard to decide which of these it's a
bug that the compiler accepts, but certainly foo3 and foo4 AISI.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 3934] Some untidy attributes

2010-04-14 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3934



--- Comment #1 from bearophile_h...@eml.cc 2010-04-14 07:35:46 PDT ---
A person in the IRC channel suggests that this too can be bad (this program
compiles and runs with dmd 2.043):

extern struct foo;
void main() {}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---