13573b2c84372d9484296fa658f5276f6c09acb92Daniel Dunbar// RUN: %clang_cc1 -P -E -fms-extensions %s | FileCheck -strict-whitespace %s 267cdc7bd9a53d7fd7d72310e2b169eba5f89fb6fChris Lattner 364b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattner// This horrible stuff should preprocess into (other than whitespace): 464b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattner// int foo; 564b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattner// int bar; 664b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattner// int baz; 764b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattner 864b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattnerint foo; 964b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattner 10170548aa344c9c0b20b660d44114af723b3987fcEdward O'Callaghan// CHECK: int foo; 11170548aa344c9c0b20b660d44114af723b3987fcEdward O'Callaghan 1264b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattner#define comment /##/ dead tokens live here 1364b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattnercomment This is stupidity 1464b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattner 1564b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattnerint bar; 1664b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattner 17170548aa344c9c0b20b660d44114af723b3987fcEdward O'Callaghan// CHECK: int bar; 18170548aa344c9c0b20b660d44114af723b3987fcEdward O'Callaghan 1964b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattner#define nested(x) int x comment cute little dead tokens... 2064b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattner 2164b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattnernested(baz) rise of the dead tokens 2264b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattner 2364b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattner; 2464b32ecc7a2d768b96d2f6d98d247bd7c3f01b4dChris Lattner 25170548aa344c9c0b20b660d44114af723b3987fcEdward O'Callaghan// CHECK: int baz 26170548aa344c9c0b20b660d44114af723b3987fcEdward O'Callaghan// CHECK: ; 27170548aa344c9c0b20b660d44114af723b3987fcEdward O'Callaghan 2867cdc7bd9a53d7fd7d72310e2b169eba5f89fb6fChris Lattner 2967cdc7bd9a53d7fd7d72310e2b169eba5f89fb6fChris Lattner// rdar://8197149 - VC++ allows invalid token pastes: (##baz 3067cdc7bd9a53d7fd7d72310e2b169eba5f89fb6fChris Lattner#define foo(x) abc(x) 3167cdc7bd9a53d7fd7d72310e2b169eba5f89fb6fChris Lattner#define bar(y) foo(##baz(y)) 3267cdc7bd9a53d7fd7d72310e2b169eba5f89fb6fChris Lattnerbar(q) 3367cdc7bd9a53d7fd7d72310e2b169eba5f89fb6fChris Lattner 3467cdc7bd9a53d7fd7d72310e2b169eba5f89fb6fChris Lattner// CHECK: abc(baz(q)) 35