Thread overview |
---|
September 10, 2011 [Issue 6639] New: Difference beetwen "foo" and "foo"c | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=6639 Summary: Difference beetwen "foo" and "foo"c Product: D Version: D2 Platform: x86 OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: zeljko.grk@gmail.com --- Comment #0 from zeljkog <zeljko.grk@gmail.com> 2011-09-10 14:37:57 CEST --- After thinking a bit more I have concluded its important consistency issue. So I reposted it as separate issue. import std.stdio; void f(S)(S str){ writeln(str); } alias f!(string) fc; alias f!(wstring) fc; void main(){ fc("foo"); // L11 //~ fc("foo"c); // works //~ auto s = "foo"; //~ fc(s); // works } //~ Compilation (dmd 2.055) breaks with message: //~ bug.d(11): Error: function alias bug.f called with argument types: //~ ((string)) //~ matches both: //~ bug.f!(string).f(string str) //~ and: //~ bug.f!(immutable(wchar)[]).f(immutable(wchar)[] str) Maybe lexer should annotate string literal without StringPostfix according source code format? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
September 10, 2011 [Issue 6639] Difference beetwen "foo" and "foo"c | ||||
---|---|---|---|---|
| ||||
Posted in reply to zeljkog | http://d.puremagic.com/issues/show_bug.cgi?id=6639 yebblies <yebblies@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |yebblies@gmail.com Resolution| |DUPLICATE --- Comment #1 from yebblies <yebblies@gmail.com> 2011-09-10 23:42:26 EST --- It should work the same for function calls as it does for type deduction: an untyped string literal should default to immutable(char)[]. Fortunately there's already a patch for this. *** This issue has been marked as a duplicate of issue 2367 *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
September 10, 2011 [Issue 6639] Difference beetwen "foo" and "foo"c | ||||
---|---|---|---|---|
| ||||
Posted in reply to zeljkog | http://d.puremagic.com/issues/show_bug.cgi?id=6639 --- Comment #2 from zeljkog <zeljko.grk@gmail.com> 2011-09-10 17:12:58 CEST --- Sorry for duplication. My point is maybe we don’t need unannotated string literal out of lexer. Maybe c is better default, but we need simple rule. Confess I’m not aware of all consequences. Something to think about, maybe? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
September 10, 2011 [Issue 6639] Difference beetwen "foo" and "foo"c | ||||
---|---|---|---|---|
| ||||
Posted in reply to zeljkog | http://d.puremagic.com/issues/show_bug.cgi?id=6639 --- Comment #3 from yebblies <yebblies@gmail.com> 2011-09-11 01:36:14 EST --- (In reply to comment #2) > My point is maybe we don’t need unannotated string literal out of lexer. Maybe c is better default, but we need simple rule. > > Confess I’m not aware of all consequences. Something to think about, maybe? We actually do need it to be initially untyped. If every string literal was implicitly utf-8, the following functions could not be called with a literal: void fun(wstring s); void fun(dstring s); void fun(const(char)* s); What is important is that a default type can be automatically used, and it already works this way some of the time. auto x = "blah blah"; // x is typed as string Extending this default type to function calls seems natural to me. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation