mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-05-17 19:36:48 +00:00

It's beneficial when compiling to treat // as the start of a line comment even in -std=c89 mode, since it's not valid C code (with a few rare exceptions) and is usually intended as such. We emit a pedantic warning and then continue on as if line comments were enabled. This has been our behavior for quite some time. However, people use the preprocessor for things besides C source files. In today's prompting example, the input contains (unquoted) URLs, which contain // but should still be preserved. This change instructs the lexer to treat // as a plain token if Clang is in C90 mode and generating preprocessed output rather than actually compiling. <rdar://problem/13338743> llvm-svn: 176526
16 lines
497 B
C
16 lines
497 B
C
/* RUN: %clang_cc1 %s -std=c89 -Eonly -verify -pedantic-errors
|
|
* RUN: %clang_cc1 %s -std=c89 -E | FileCheck %s
|
|
*/
|
|
|
|
/* PR3919 */
|
|
|
|
#define foo`bar /* expected-error {{whitespace required after macro name}} */
|
|
#define foo2!bar /* expected-warning {{whitespace recommended after macro name}} */
|
|
|
|
#define foo3$bar /* expected-error {{'$' in identifier}} */
|
|
|
|
/* CHECK-NOT: this comment should be missing
|
|
* CHECK: {{^}}// this comment should be present{{$}}
|
|
*/
|
|
// this comment should be present
|