bypasssafe.go

 1// Copyright (c) 2015-2016 Dave Collins <dave@davec.name>
 2//
 3// Permission to use, copy, modify, and distribute this software for any
 4// purpose with or without fee is hereby granted, provided that the above
 5// copyright notice and this permission notice appear in all copies.
 6//
 7// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 8// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 9// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
15// NOTE: Due to the following build constraints, this file will only be compiled
16// when the code is running on Google App Engine, compiled by GopherJS, or
17// "-tags safe" is added to the go build command line.  The "disableunsafe"
18// tag is deprecated and thus should not be used.
19// +build js appengine safe disableunsafe !go1.4
20
21package spew
22
23import "reflect"
24
25const (
26	// UnsafeDisabled is a build-time constant which specifies whether or
27	// not access to the unsafe package is available.
28	UnsafeDisabled = true
29)
30
31// unsafeReflectValue typically converts the passed reflect.Value into a one
32// that bypasses the typical safety restrictions preventing access to
33// unaddressable and unexported data.  However, doing this relies on access to
34// the unsafe package.  This is a stub version which simply returns the passed
35// reflect.Value when the unsafe package is not available.
36func unsafeReflectValue(v reflect.Value) reflect.Value {
37	return v
38}