implement ast nodes for while and do loops
llvm-svn: 39116
diff --git a/clang/Sema/Sema.cpp b/clang/Sema/Sema.cpp
index 78d3725..56eb4d1 100644
--- a/clang/Sema/Sema.cpp
+++ b/clang/Sema/Sema.cpp
@@ -114,6 +114,17 @@
}
Action::StmtResult
+ASTBuilder::ParseWhileStmt(SourceLocation WhileLoc, ExprTy *Cond, StmtTy *Body){
+ return new WhileStmt((Expr*)Cond, (Stmt*)Body);
+}
+
+Action::StmtResult
+ASTBuilder::ParseDoStmt(SourceLocation DoLoc, StmtTy *Body,
+ SourceLocation WhileLoc, ExprTy *Cond) {
+ return new DoStmt((Stmt*)Body, (Expr*)Cond);
+}
+
+Action::StmtResult
ASTBuilder::ParseReturnStmt(SourceLocation ReturnLoc,
ExprTy *RetValExp) {
return new ReturnStmt((Expr*)RetValExp);
diff --git a/clang/Sema/Sema.h b/clang/Sema/Sema.h
index 11440d5..e8ae0a8 100644
--- a/clang/Sema/Sema.h
+++ b/clang/Sema/Sema.h
@@ -61,6 +61,11 @@
StmtTy *ThenVal, SourceLocation ElseLoc,
StmtTy *ElseVal);
+ virtual StmtResult ParseWhileStmt(SourceLocation WhileLoc, ExprTy *Cond,
+ StmtTy *Body);
+ virtual StmtResult ParseDoStmt(SourceLocation DoLoc, StmtTy *Body,
+ SourceLocation WhileLoc, ExprTy *Cond);
+
virtual StmtResult ParseForStmt(SourceLocation ForLoc,
SourceLocation LParenLoc,
StmtTy *First, ExprTy *Second, ExprTy *Third,