Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Duplicate error messages for array bounds errors #17607

Open
dlangBugzillaToGithub opened this issue Aug 27, 2013 · 3 comments
Open

Duplicate error messages for array bounds errors #17607

dlangBugzillaToGithub opened this issue Aug 27, 2013 · 3 comments

Comments

@dlangBugzillaToGithub
Copy link

Don reported this on 2013-08-27T00:05:32Z

Transferred from https://issues.dlang.org/show_bug.cgi?id=10910

CC List

Description

The problem is in implicitConvTo() and implicitCastTo(). They call optimize(), but don't save the result.

optimize() can generate an error message, and return an ErrorExp when an array bounds error occurs.
It should be called BEFORE implicitConvTo, instead of inside it.
There are many cases of this, here are some examples:


void example()
{
   char c = "abcdef"[17];
   char[7] x = "abc"[12];
   int ww = "abc"["afds"[9]];
}

diag.d(4): Error: string index 17 is out of bounds [0 .. 6]
diag.d(4): Error: string index 17 is out of bounds [0 .. 6]
diag.d(5): Error: string index 12 is out of bounds [0 .. 3]
diag.d(5): Error: string index 12 is out of bounds [0 .. 3]
diag.d(5): Error: string index 12 is out of bounds [0 .. 3]
diag.d(5): Error: string index 12 is out of bounds [0 .. 3]
diag.d(6): Error: string index 9 is out of bounds [0 .. 4]
diag.d(6): Error: string index 9 is out of bounds [0 .. 4]
@dlangBugzillaToGithub
Copy link
Author

clugdbug commented on 2013-08-27T11:52:20Z

A couple more examples:

void bug10910(string y) {}

char example()
{
    char c = "abcdef"[17];
    char [7] x = "abc"[12];
    int ww = "abc"["dsdffg"[9]];
    int m = new int["as"[218]];
    auto aa = [0:0];
    aa.remove("dgffs"[356]);
    bug10910("sdgdf"[14..16]);
    return c;
}

The last line gives a particularly silly error message:

junk.d(80): Error: string slice [14 .. 16] is out of bounds
junk.d(80): Error: function junk.bug10910 (string y) is not callable using argument types (string)

Converting string to string is not exactly rocket science.

@dlangBugzillaToGithub
Copy link
Author

k.hara.pg commented on 2015-01-16T07:44:23Z

*** Issue 12943 has been marked as a duplicate of this issue. ***

@dlangBugzillaToGithub
Copy link
Author

dlang-bot commented on 2023-06-13T18:45:31Z

@WalterBright updated dlang/dmd pull request #15314 "fix https://issues.dlang.org/show_bug.cgi?id=10910" fixing this issue:

- fix Issue 10910 - Duplicate error messages for array bounds errors

https://github.com/dlang/dmd/pull/15314

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant