digitalmars.D.bugs - [Issue 8354] New: Some missing "import std.math to use ^^ operator" error messages
- d-bugmail puremagic.com (48/48) Jul 06 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8354
- d-bugmail puremagic.com (57/102) Jul 14 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8354
- d-bugmail puremagic.com (16/16) Aug 06 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8354
- d-bugmail puremagic.com (9/9) Aug 06 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8354
- d-bugmail puremagic.com (9/9) Aug 19 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8354
- d-bugmail puremagic.com (21/21) Jan 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=8354
- d-bugmail puremagic.com (14/29) Jan 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=8354
http://d.puremagic.com/issues/show_bug.cgi?id=8354 Summary: Some missing "import std.math to use ^^ operator" error messages Product: D Version: D2 Platform: All OS/Version: All Status: NEW Keywords: diagnostic Severity: minor Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: bearophile_hugs eml.cc A wrong D2 program: void main() { int x1 = 10; auto y1 = x1 ^^ 5; } It gives a correct error message: test.d(3): Error: must import std.math to use ^^ operator ------------------------ But adding a second power it gives a wrong error message (dmd 2.060alpha): void main() { int x1 = 10; auto y1 = x1 ^^ 5; double x2 = 10.5; auto y2 = x2 ^^ 5; } test.d(3): Error: must import std.math to use ^^ operator test.d(5): Error: undefined identifier 'std' Here I'd like the second power to give an error message similar to the first one. ------------------------ Something similar happens if you import pow, this time for both powers: import std.math: pow; void main() { int x1 = 10; auto y1 = x1 ^^ 5; double x2 = 10.5; auto y2 = x2 ^^ 5; } test.d(4): Error: undefined identifier 'std' test.d(6): Error: undefined identifier 'std' -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 06 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8354 Masahiro Nakagawa <repeatedly gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |repeatedly gmail.com 14:11:22 PDT ---A wrong D2 program: void main() { int x1 = 10; auto y1 = x1 ^^ 5; } It gives a correct error message: test.d(3): Error: must import std.math to use ^^ operator ------------------------ But adding a second power it gives a wrong error message (dmd 2.060alpha): void main() { int x1 = 10; auto y1 = x1 ^^ 5; double x2 = 10.5; auto y2 = x2 ^^ 5; } test.d(3): Error: must import std.math to use ^^ operator test.d(5): Error: undefined identifier 'std' Here I'd like the second power to give an error message similar to the first one.Following patch fixes this problem: ----- diff --git a/src/expression.c b/src/expression.c index 392ca06..9916fbe 100644 --- a/src/expression.c +++ b/src/expression.c -11472,6 +11472,7 Expression *PowExp::semantic(Scope *sc) } static int importMathChecked = 0; + static bool importMath = false; if (!importMathChecked) { importMathChecked = 1; -11480,13 +11481,20 Expression *PowExp::semantic(Scope *sc) //printf("\t[%d] %s\n", i, mi->toChars()); if (mi->ident == Id::math && mi->parent->ident == Id::std && - !mi->parent->parent) + !mi->parent->parent) { + importMath = true; goto L1; + } } error("must import std.math to use ^^ operator"); return new ErrorExp(); L1: ; + } else { + if (!importMath) { + error("must import std.math to use ^^ operator"); + return new ErrorExp(); + } } e = new IdentifierExp(loc, Id::empty); ----------------------------- Something similar happens if you import pow, this time for both powers: import std.math: pow; void main() { int x1 = 10; auto y1 = x1 ^^ 5; double x2 = 10.5; auto y2 = x2 ^^ 5; } test.d(4): Error: undefined identifier 'std' test.d(6): Error: undefined identifier 'std'I can't judge the this problem is bug or spec. 'import std.math: pow' does not import 'std' namespace, but dmd replaces ^^ with std.math.sqrt or std.math.pow. This is the same problem below: ----- import std.math : sqrt; void main() { real x1 = 10; auto y1 = std.math.sqrt(x1); } m.d(6): Error: undefined identifier std ----- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 14 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8354 Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/46610791735d157bd7558ddf34fbd0d875367452 Fix issue 8354 - Some missing "import std.math to use ^^ operator" error messages This patch fixes a wrong error message of multiple power expressions without 'import std.math'. This patch does not fix 'import std.math: pow;' issue, because '^^' spec is a another problem. https://github.com/D-Programming-Language/dmd/commit/cef1bbfdcd9282934ff6f1b07617254753334799 Fix issue 8354 - Some missing "import std.math to use ^^ operator" error... -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 06 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8354 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 06 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8354 Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/21f32ed72f75f0eaf68f06da62eb4c8e3e0a2c98 fix Issue 8354 - Some missing "import std.math to use ^^ operator" error messages -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 19 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8354 Puneet Goel <puneet coverify.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED CC| |puneet coverify.org Resolution|FIXED | --- If std.math is imported in one module and power (^^) expression is used in another module and both the modules are compiled together, we again see the same confusing error: bar.d(1): Error: undefined identifier 'std' Here is the testcase (compile with -- dmd foo.d bar.d): // File foo.d import std.math; void foo() { } // File bar.d void bar(int i) { 2^^i; } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=8354 Andrej Mitrovic <andrej.mitrovich gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |RESOLVED CC| |andrej.mitrovich gmail.com Resolution| |DUPLICATE 15:07:59 PST ---If std.math is imported in one module and power (^^) expression is used in another module and both the modules are compiled together, we again see the same confusing error: bar.d(1): Error: undefined identifier 'std' Here is the testcase (compile with -- dmd foo.d bar.d): // File foo.d import std.math; void foo() { } // File bar.d void bar(int i) { 2^^i; }This will be fixed with pull for Issue 9047. *** This issue has been marked as a duplicate of issue 9047 *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 10 2013