From 0fd12f14536f4ca62428b27c3d23f26809c66cb3 Mon Sep 17 00:00:00 2001
From: Ambrose Bonnaire-Sergeant <abonnairesergeant@gmail.com>
Date: Sun, 6 May 2012 21:37:26 +0800
Subject: [PATCH 10/10] Add metadata for function invocations

---
 src/jvm/clojure/lang/Compiler.java |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
index 0898f07..27665d1 100644
--- a/src/jvm/clojure/lang/Compiler.java
+++ b/src/jvm/clojure/lang/Compiler.java
@@ -3308,6 +3308,7 @@ static class InvokeExpr implements Expr{
 	public final IPersistentVector args;
 	public final int line;
 	public final String source;
+	public final IPersistentMap meta;
 	public boolean isProtocol = false;
 	public boolean isDirect = false;
 	public int siteIndex = -1;
@@ -3316,11 +3317,12 @@ static class InvokeExpr implements Expr{
 	static Keyword onKey = Keyword.intern("on");
 	static Keyword methodMapKey = Keyword.intern("method-map");
 
-	public InvokeExpr(String source, int line, Symbol tag, Expr fexpr, IPersistentVector args) {
+	public InvokeExpr(String source, int line, Symbol tag, Expr fexpr, IPersistentVector args, IPersistentMap meta) {
 		this.source = source;
 		this.fexpr = fexpr;
 		this.args = args;
 		this.line = line;
+		this.meta = meta;
 		if(fexpr instanceof VarExpr)
 			{
 			Var fvar = ((VarExpr)fexpr).var;
@@ -3551,7 +3553,7 @@ static class InvokeExpr implements Expr{
 //			throw new IllegalArgumentException(
 //					String.format("No more than %d args supported", MAX_POSITIONAL_ARITY));
 
-		return new InvokeExpr((String) SOURCE.deref(), (Integer) LINE.deref(), tagOf(form), fexpr, args);
+		return new InvokeExpr((String) SOURCE.deref(), (Integer) LINE.deref(), tagOf(form), fexpr, args, RT.meta(form));
 	}
 }
 
-- 
1.7.5.4

