[Bug c++/69215] New: Improve diagnostic for 'for(i : v)'

rs2740 at gmail dot com gcc-bugzilla@gcc.gnu.org
Sun Jan 10 05:12:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69215

            Bug ID: 69215
           Summary: Improve diagnostic for  'for(i : v)'
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: enhancement
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rs2740 at gmail dot com
  Target Milestone: ---

Something like

#include <vector>

int main(){
    std::vector<int> v;
    for(i : v) {}
}

produces a storm of not-very-enlightening errors on trunk:

prog.cc: In function 'int main()':
prog.cc:5:11: error: found ':' in nested-name-specifier, expected '::'
     for(i : v) {}
           ^

prog.cc:5:9: error: 'i' has not been declared
     for(i : v) {}
         ^

prog.cc:6:1: error: expected primary-expression before '}' token
 }
 ^

prog.cc:6:1: error: expected ';' before '}' token
prog.cc:6:1: error: expected primary-expression before '}' token
prog.cc:6:1: error: expected ')' before '}' token
prog.cc:6:1: error: expected primary-expression before '}' token

in contrast to clang's:

prog.cc:5:9: error: range-based for loop requires type for loop variable
    for(i : v) {}
        ^

Perhaps the code implementing N3994, removed by r229632, can be repurposed
instead to produce a better error message?


More information about the Gcc-bugs mailing list