veyron2/options: Make NoResolve a struct.

Change-Id: I4259301ebd2960bb0880cf96f63f14ad7bfb9c28
diff --git a/runtimes/google/ipc/client.go b/runtimes/google/ipc/client.go
index 827ba1b..5b3cda0 100644
--- a/runtimes/google/ipc/client.go
+++ b/runtimes/google/ipc/client.go
@@ -262,8 +262,8 @@
 
 func getNoResolveOpt(opts []ipc.CallOpt) bool {
 	for _, o := range opts {
-		if r, ok := o.(options.NoResolve); ok {
-			return bool(r)
+		if _, ok := o.(options.NoResolve); ok {
+			return true
 		}
 	}
 	return false
diff --git a/runtimes/google/ipc/debug_test.go b/runtimes/google/ipc/debug_test.go
index e8c3b2f..1c5782c 100644
--- a/runtimes/google/ipc/debug_test.go
+++ b/runtimes/google/ipc/debug_test.go
@@ -72,7 +72,7 @@
 		foo := stats.NewString("testing/foo")
 		foo.Set("The quick brown fox jumps over the lazy dog")
 		addr := naming.JoinAddressName(ep.String(), "__debug/stats/testing/foo")
-		call, err := client.StartCall(ctx, addr, "Value", nil, options.NoResolve(true))
+		call, err := client.StartCall(ctx, addr, "Value", nil, options.NoResolve{})
 		if err != nil {
 			t.Fatalf("client.StartCall failed: %v", err)
 		}
@@ -100,7 +100,7 @@
 	}
 	for _, tc := range testcases {
 		addr := naming.JoinAddressName(ep.String(), tc.name)
-		call, err := client.StartCall(ctx, addr, ipc.GlobMethod, []interface{}{tc.pattern}, options.NoResolve(true))
+		call, err := client.StartCall(ctx, addr, ipc.GlobMethod, []interface{}{tc.pattern}, options.NoResolve{})
 		if err != nil {
 			t.Fatalf("client.StartCall failed for %q: %v", tc.name, err)
 		}
diff --git a/runtimes/google/naming/namespace/glob.go b/runtimes/google/naming/namespace/glob.go
index d4825fe..dd287c3 100644
--- a/runtimes/google/naming/namespace/glob.go
+++ b/runtimes/google/naming/namespace/glob.go
@@ -56,7 +56,7 @@
 
 		// Don't further resolve s.Server.
 		callCtx, _ := context.WithTimeout(ctx, callTimeout)
-		call, err := client.StartCall(callCtx, s.Server, ipc.GlobMethod, []interface{}{pstr}, options.NoResolve(true))
+		call, err := client.StartCall(callCtx, s.Server, ipc.GlobMethod, []interface{}{pstr}, options.NoResolve{})
 		if err != nil {
 			lastErr = err
 			continue // try another instance
diff --git a/runtimes/google/naming/namespace/mount.go b/runtimes/google/naming/namespace/mount.go
index 0182a2a..fe85b19 100644
--- a/runtimes/google/naming/namespace/mount.go
+++ b/runtimes/google/naming/namespace/mount.go
@@ -22,7 +22,7 @@
 func mountIntoMountTable(ctx *context.T, client ipc.Client, name, server string, ttl time.Duration, flags naming.MountFlag, id string) (s status) {
 	s.id = id
 	ctx, _ = context.WithTimeout(ctx, callTimeout)
-	call, err := client.StartCall(ctx, name, "Mount", []interface{}{server, uint32(ttl.Seconds()), flags}, options.NoResolve(true))
+	call, err := client.StartCall(ctx, name, "Mount", []interface{}{server, uint32(ttl.Seconds()), flags}, options.NoResolve{})
 	s.err = err
 	if err != nil {
 		return
@@ -37,7 +37,7 @@
 func unmountFromMountTable(ctx *context.T, client ipc.Client, name, server string, id string) (s status) {
 	s.id = id
 	ctx, _ = context.WithTimeout(ctx, callTimeout)
-	call, err := client.StartCall(ctx, name, "Unmount", []interface{}{server}, options.NoResolve(true))
+	call, err := client.StartCall(ctx, name, "Unmount", []interface{}{server}, options.NoResolve{})
 	s.err = err
 	if err != nil {
 		return
diff --git a/runtimes/google/naming/namespace/resolve.go b/runtimes/google/naming/namespace/resolve.go
index 2f16f26..28bfeae 100644
--- a/runtimes/google/naming/namespace/resolve.go
+++ b/runtimes/google/naming/namespace/resolve.go
@@ -32,7 +32,7 @@
 		}
 		// Not in cache, call the real server.
 		callCtx, _ := context.WithTimeout(ctx, callTimeout)
-		call, err := client.StartCall(callCtx, pattern_and_name, "ResolveStepX", nil, append(opts, options.NoResolve(true))...)
+		call, err := client.StartCall(callCtx, pattern_and_name, "ResolveStepX", nil, append(opts, options.NoResolve{})...)
 		if err != nil {
 			finalErr = err
 			vlog.VI(2).Infof("ResolveStep.StartCall %s failed: %s", name, err)
@@ -215,8 +215,8 @@
 
 func skipResolve(opts []naming.ResolveOpt) bool {
 	for _, o := range opts {
-		if r, ok := o.(options.NoResolve); ok {
-			return bool(r)
+		if _, ok := o.(options.NoResolve); ok {
+			return true
 		}
 	}
 	return false
diff --git a/runtimes/google/testing/mocks/naming/namespace.go b/runtimes/google/testing/mocks/naming/namespace.go
index 09c017c..3665bb2 100644
--- a/runtimes/google/testing/mocks/naming/namespace.go
+++ b/runtimes/google/testing/mocks/naming/namespace.go
@@ -87,7 +87,7 @@
 
 func (ns *namespace) ResolveX(ctx *context.T, name string, opts ...naming.ResolveOpt) (*naming.MountEntry, error) {
 	defer vlog.LogCall()()
-	e, err := ns.ns.ResolveX(ctx, name, options.NoResolve(true))
+	e, err := ns.ns.ResolveX(ctx, name, options.NoResolve{})
 	if err != nil {
 		return e, err
 	}
diff --git a/services/mounttable/lib/mounttable_test.go b/services/mounttable/lib/mounttable_test.go
index 623df86..4240970 100644
--- a/services/mounttable/lib/mounttable_test.go
+++ b/services/mounttable/lib/mounttable_test.go
@@ -38,7 +38,7 @@
 	name := naming.JoinAddressName(ep, suffix)
 	ctx := as.NewContext()
 	client := as.Client()
-	call, err := client.StartCall(ctx, name, "Mount", []interface{}{service, uint32(ttlSecs), 0}, options.NoResolve(true))
+	call, err := client.StartCall(ctx, name, "Mount", []interface{}{service, uint32(ttlSecs), 0}, options.NoResolve{})
 	if err != nil {
 		if !shouldSucceed {
 			return
@@ -63,7 +63,7 @@
 	name := naming.JoinAddressName(ep, suffix)
 	ctx := as.NewContext()
 	client := as.Client()
-	call, err := client.StartCall(ctx, name, "Unmount", []interface{}{service}, options.NoResolve(true))
+	call, err := client.StartCall(ctx, name, "Unmount", []interface{}{service}, options.NoResolve{})
 	if err != nil {
 		if !shouldSucceed {
 			return
@@ -88,7 +88,7 @@
 	name := naming.JoinAddressName(ep, suffix)
 	ctx := as.NewContext()
 	client := as.Client()
-	call, err := client.StartCall(ctx, name, "GetACL", nil, options.NoResolve(true))
+	call, err := client.StartCall(ctx, name, "GetACL", nil, options.NoResolve{})
 	if err != nil {
 		if !shouldSucceed {
 			return
@@ -114,7 +114,7 @@
 	name := naming.JoinAddressName(ep, suffix)
 	ctx := as.NewContext()
 	client := as.Client()
-	call, err := client.StartCall(ctx, name, "SetACL", []interface{}{acl, etag}, options.NoResolve(true))
+	call, err := client.StartCall(ctx, name, "SetACL", []interface{}{acl, etag}, options.NoResolve{})
 	if err != nil {
 		if !shouldSucceed {
 			return
@@ -140,7 +140,7 @@
 	name := naming.JoinAddressName(ep, suffix)
 	ctx := as.NewContext()
 	client := as.Client()
-	call, err := client.StartCall(ctx, name, "Delete", []interface{}{false}, options.NoResolve(true))
+	call, err := client.StartCall(ctx, name, "Delete", []interface{}{false}, options.NoResolve{})
 	if err != nil {
 		if !shouldSucceed {
 			return
@@ -165,7 +165,7 @@
 	name := naming.JoinAddressName(ep, suffix)
 	ctx := as.NewContext()
 	client := as.Client()
-	call, err := client.StartCall(ctx, name, "Delete", []interface{}{true}, options.NoResolve(true))
+	call, err := client.StartCall(ctx, name, "Delete", []interface{}{true}, options.NoResolve{})
 	if err != nil {
 		if !shouldSucceed {
 			return
@@ -191,7 +191,7 @@
 	// Resolve the name one level.
 	ctx := as.NewContext()
 	client := as.Client()
-	call, err := client.StartCall(ctx, name, "ResolveStepX", nil, options.NoResolve(true))
+	call, err := client.StartCall(ctx, name, "ResolveStepX", nil, options.NoResolve{})
 	if err != nil {
 		return "", err
 	}
@@ -214,7 +214,7 @@
 	// Export the value.
 	ctx := as.NewContext()
 	client := as.Client()
-	call, err := client.StartCall(ctx, resolved, "Export", []interface{}{contents, true}, options.NoResolve(true))
+	call, err := client.StartCall(ctx, resolved, "Export", []interface{}{contents, true}, options.NoResolve{})
 	if err != nil {
 		boom(t, "Failed to Export.StartCall %s to %s: %s", name, contents, err)
 	}
@@ -238,7 +238,7 @@
 	// Look up the value.
 	ctx := as.NewContext()
 	client := as.Client()
-	call, err := client.StartCall(ctx, resolved, "Lookup", nil, options.NoResolve(true))
+	call, err := client.StartCall(ctx, resolved, "Lookup", nil, options.NoResolve{})
 	if err != nil {
 		if shouldSucceed {
 			boom(t, "Failed Lookup.StartCall %s: %s", name, err)
@@ -392,7 +392,7 @@
 	name := naming.JoinAddressName(ep, suffix)
 	ctx := as.NewContext()
 	client := as.Client()
-	call, err := client.StartCall(ctx, name, ipc.GlobMethod, []interface{}{pattern}, options.NoResolve(true))
+	call, err := client.StartCall(ctx, name, ipc.GlobMethod, []interface{}{pattern}, options.NoResolve{})
 	if err != nil {
 		boom(t, "Glob.StartCall %s %s: %s", name, pattern, err)
 	}
diff --git a/services/mounttable/lib/neighborhood_test.go b/services/mounttable/lib/neighborhood_test.go
index 89ffd85..0e48ee4 100644
--- a/services/mounttable/lib/neighborhood_test.go
+++ b/services/mounttable/lib/neighborhood_test.go
@@ -82,7 +82,7 @@
 	ctx := rootRT.NewContext()
 	client := rootRT.Client()
 	name := naming.JoinAddressName(estr, serverName+"/"+expectedSuffix)
-	call, cerr := client.StartCall(ctx, name, "ResolveStepX", nil, options.NoResolve(true))
+	call, cerr := client.StartCall(ctx, name, "ResolveStepX", nil, options.NoResolve{})
 	if cerr != nil {
 		boom(t, "ResolveStepX.StartCall: %s", cerr)
 	}
diff --git a/tools/mounttable/impl.go b/tools/mounttable/impl.go
index 0313315..067b27a 100644
--- a/tools/mounttable/impl.go
+++ b/tools/mounttable/impl.go
@@ -39,7 +39,7 @@
 	ctx, cancel := context.WithTimeout(runtime.NewContext(), time.Minute)
 	defer cancel()
 	name, pattern := args[0], args[1]
-	call, err := runtime.Client().StartCall(ctx, name, ipc.GlobMethod, []interface{}{pattern}, options.NoResolve(true))
+	call, err := runtime.Client().StartCall(ctx, name, ipc.GlobMethod, []interface{}{pattern}, options.NoResolve{})
 	if err != nil {
 		return err
 	}
@@ -100,7 +100,7 @@
 	}
 	ctx, cancel := context.WithTimeout(runtime.NewContext(), time.Minute)
 	defer cancel()
-	call, err := runtime.Client().StartCall(ctx, args[0], "Mount", []interface{}{args[1], seconds, 0}, options.NoResolve(true))
+	call, err := runtime.Client().StartCall(ctx, args[0], "Mount", []interface{}{args[1], seconds, 0}, options.NoResolve{})
 	if err != nil {
 		return err
 	}
@@ -133,7 +133,7 @@
 	}
 	ctx, cancel := context.WithTimeout(runtime.NewContext(), time.Minute)
 	defer cancel()
-	call, err := runtime.Client().StartCall(ctx, args[0], "Unmount", []interface{}{args[1]}, options.NoResolve(true))
+	call, err := runtime.Client().StartCall(ctx, args[0], "Unmount", []interface{}{args[1]}, options.NoResolve{})
 	if err != nil {
 		return err
 	}
@@ -165,7 +165,7 @@
 	}
 	ctx, cancel := context.WithTimeout(runtime.NewContext(), time.Minute)
 	defer cancel()
-	call, err := runtime.Client().StartCall(ctx, args[0], "ResolveStepX", []interface{}{}, options.NoResolve(true))
+	call, err := runtime.Client().StartCall(ctx, args[0], "ResolveStepX", []interface{}{}, options.NoResolve{})
 	if err != nil {
 		return err
 	}