public void Visit(NodeLet let) { var sym = walker.Current.Lookup(let.Name); sym.userdata = BuildAlloca(builder, TypeConverter.ToLLVMTy(let.Ty.Raw, context), let.Name); let.value.Accept(this); var value = Pop().value; BuildStore(builder, value, (LLVMValueRef)sym.userdata); }
public void Visit(NodeLet let) { log.Error(let.Span, "A let binding is not valid in this placement. Perhaps you meant to put it in a function?"); }
public void Visit(NodeLet let) { throw new NotImplementedException(); }
public void Visit(NodeLet let) { let.value.Accept(this); var valueTy = Pop(); if (let.Ty is InferTyRef) { let.spTy = valueTy.Spanned(); (walker.Current.Lookup(let.Name) as VarSymbol).ty = valueTy; } if (let.Ty.Raw != valueTy) log.Error(let.spTy.span, "Type mismatch: Cannot assign {0} to {1}.", valueTy, let.Ty); }
public void Visit(NodeLet let) { ResolveTy(let.spTy); let.value.Accept(this); }
public void Visit(NodeLet let) { symbols.InsertVar(let.Name, let.Ty); let.value.Accept(this); }
public void Visit(NodeLet let) { Write("'let' "); Write(let.Name); if (!(let.Ty is InferTyRef)) { Write(" ':' "); Write(let.Ty.ToString()); } Write(" '=' "); let.value.Accept(this); }