Nick Desaulniers 150ca5309e [SEMA] split ExtWarn dupl-decl-spec's into Extension and ExtWarn
Summary:
For types deduced from typedef's and typeof's, don't warn for duplicate
declaration specifiers in C90 unless -pedantic.

Create a third diagnostic type for duplicate declaration specifiers.
Previously, we had an ExtWarn and a Warning. This change adds a third,
Extension, which only warns when -pedantic is set, staying silent
otherwise.

Fixes PR32985.

Reviewers: rsmith

Reviewed By: rsmith

Subscribers: srhines, cfe-commits

Differential Revision: https://reviews.llvm.org/D52849

llvm-svn: 343740
2018-10-03 23:09:29 +00:00

21 lines
702 B
C

/*
RUN: %clang_cc1 %s -std=gnu89 -fsyntax-only 2>&1 | FileCheck -check-prefix=CHECK-GNU89 %s -allow-empty
RUN: %clang_cc1 %s -std=gnu89 -pedantic -fsyntax-only 2>&1 | FileCheck -check-prefix=CHECK-GNU89-PEDANTIC %s
*/
typedef const int t;
const t c_i;
/*
CHECK-GNU89-NOT: 7:1: warning: duplicate 'const' declaration specifier
CHECK-GNU89-PEDANTIC: 7:1: warning: duplicate 'const' declaration specifier
*/
const int c_i2;
const typeof(c_i2) c_i3;
/*
CHECK-GNU89-NOT: 14:7: warning: extension used
CHECK-GNU89-NOT: 14:1: warning: duplicate 'const' declaration specifier
CHECK-GNU89-PEDANTIC: 14:7: warning: extension used
CHECK-GNU89-PEDANTIC: 14:1: warning: duplicate 'const' declaration specifier
*/