use easter::id::{IdData, Id};
use unjson::ty::Object;
use joker::track::*;
use tag::{Tag, TagOf};
use error::Error;
use result::Result;
pub trait IntoId {
fn into_id(self) -> Result<Id>;
}
impl IntoStmt for Object {
fn into_stmt(self) -> Result<Stmt> {
let tag = try!(self.tag());
Ok(match tag {
Tag::EmptyStatement => StmtData::Empty,
Tag::ExpressionStatement => unimplemented!(),
Tag::IfStatement => unimplemented!(),
Tag::DoWhileStatement => unimplemented!(),
Tag::WhileStatement => unimplemented!(),
Tag::ForStatement => unimplemented!(),
Tag::ForInStatement => unimplemented!(),
Tag::ForOfStatement => unimplemented!(),
Tag::BlockStatement => unimplemented!(),
Tag::ReturnStatement => unimplemented!(),
Tag::LabeledStatement => unimplemented!(),
Tag::BreakStatement => unimplemented!(),
Tag::ContinueStatement => unimplemented!(),
Tag::SwitchStatement => unimplemented!(),
Tag::WithStatement => unimplemented!(),
Tag::ThrowStatement => unimplemented!(),
Tag::DebuggerStatement => unimplemented!(),
Tag::TryStatement => unimplemented!(),
_ => { return Err(Error::NodeTypeMismatch("statement", tag)); }
}.tracked(None))
}
}