[weak vtables] Place class definitions into anonymous namespaces to prevent weak...
[oota-llvm.git] / examples / Kaleidoscope / Chapter3 / toy.cpp
index 2494345c3f174b8ac0b963849fe7eea8e531e18f..a7b60ba3220a47d5c342d742a9cfe0b9b8852ae4 100644 (file)
@@ -80,17 +80,14 @@ static int gettok() {
 //===----------------------------------------------------------------------===//
 // Abstract Syntax Tree (aka Parse Tree)
 //===----------------------------------------------------------------------===//
-
+namespace {
 /// ExprAST - Base class for all expression nodes.
 class ExprAST {
 public:
-  virtual ~ExprAST();
+  virtual ~ExprAST() {}
   virtual Value *Codegen() = 0;
 };
 
-// Provide out-of-line definition to prevent weak vtable.
-ExprAST::~ExprAST() {}
-
 /// NumberExprAST - Expression class for numeric literals like "1.0".
 class NumberExprAST : public ExprAST {
   double Val;
@@ -150,6 +147,7 @@ public:
   
   Function *Codegen();
 };
+} // end anonymous namespace
 
 //===----------------------------------------------------------------------===//
 // Parser