exprs.c revision 1f0d0133b0e8d1f01f63951ee04927796b34740d
10b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor// Test this without pch.
20b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor// RUN: clang-cc -fblocks -include %S/exprs.h -fsyntax-only -verify %s
30b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor
40b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor// Test with pch.
50b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor// RUN: clang-cc -emit-pch -fblocks -o %t %S/exprs.h &&
60b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor// RUN: clang-cc -fblocks -include-pch %t -fsyntax-only -verify %s
70b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor
80b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorint integer;
90b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorlong long_integer;
1017fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregordouble floating;
110b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor
120b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor// DeclRefExpr
130b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorint_decl_ref *int_ptr1 = &integer;
140b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorenum_decl_ref *enum_ptr1 = &integer;
1517fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor
1617fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor// IntegerLiteral
170b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorinteger_literal *int_ptr2 = &integer;
180b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorlong_literal *long_ptr1 = &long_integer;
190b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor
20db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor// FloatingLiteral + ParenExpr
2117fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregorfloating_literal *double_ptr = &floating;
2217fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor
23673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregor// StringLiteral
24673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregorconst char* printHello() {
25673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregor  return hello;
26673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregor}
27673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregor
2817fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor// CharacterLiteral
290b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregorchar_literal *int_ptr3 = &integer;
30db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor
310b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor// UnaryOperator
320b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregornegate_enum *int_ptr4 = &integer;
330b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor
340b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor// SizeOfAlignOfExpr
350b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregortypeof(sizeof(float)) size_t_value;
360b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregortypeof_sizeof *size_t_ptr = &size_t_value;
370b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregortypeof_sizeof2 *size_t_ptr2 = &size_t_value;
380b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor
391f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor// CallExpr
401f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregorcall_returning_double *double_ptr2 = &floating;
411f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor
421f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor// MemberExpr
431f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregormember_ref_double *double_ptr3 = &floating;
441f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor
45db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor// BinaryOperator
460b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregoradd_result *int_ptr5 = &integer;
47db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor
48db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor// CStyleCastExpr
49db600c330a37b1c3ab4533310729910ee188f900Douglas Gregorvoid_ptr vp1 = &integer;
50