Index: third_party/google_input_tools/third_party/closure_library/closure/goog/reflect/reflect.js |
diff --git a/third_party/google_input_tools/third_party/closure_library/closure/goog/reflect/reflect.js b/third_party/google_input_tools/third_party/closure_library/closure/goog/reflect/reflect.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..df09e15e1c9cea34f782fe2b6252e72316e6db7c |
--- /dev/null |
+++ b/third_party/google_input_tools/third_party/closure_library/closure/goog/reflect/reflect.js |
@@ -0,0 +1,77 @@ |
+// Copyright 2009 The Closure Library Authors. All Rights Reserved. |
+// |
+// Licensed under the Apache License, Version 2.0 (the "License"); |
+// you may not use this file except in compliance with the License. |
+// You may obtain a copy of the License at |
+// |
+// http://www.apache.org/licenses/LICENSE-2.0 |
+// |
+// Unless required by applicable law or agreed to in writing, software |
+// distributed under the License is distributed on an "AS-IS" BASIS, |
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+// See the License for the specific language governing permissions and |
+// limitations under the License. |
+ |
+/** |
+ * @fileoverview Useful compiler idioms. |
+ * |
+ */ |
+ |
+goog.provide('goog.reflect'); |
+ |
+ |
+/** |
+ * Syntax for object literal casts. |
+ * @see http://go/jscompiler-renaming |
+ * @see http://code.google.com/p/closure-compiler/wiki/ |
+ * ExperimentalTypeBasedPropertyRenaming |
+ * |
+ * Use this if you have an object literal whose keys need to have the same names |
+ * as the properties of some class even after they are renamed by the compiler. |
+ * |
+ * @param {!Function} type Type to cast to. |
+ * @param {Object} object Object literal to cast. |
+ * @return {Object} The object literal. |
+ */ |
+goog.reflect.object = function(type, object) { |
+ return object; |
+}; |
+ |
+ |
+/** |
+ * To assert to the compiler that an operation is needed when it would |
+ * otherwise be stripped. For example: |
+ * <code> |
+ * // Force a layout |
+ * goog.reflect.sinkValue(dialog.offsetHeight); |
+ * </code> |
+ * @type {!Function} |
+ */ |
+goog.reflect.sinkValue = function(x) { |
+ goog.reflect.sinkValue[' '](x); |
+ return x; |
+}; |
+ |
+ |
+/** |
+ * The compiler should optimize this function away iff no one ever uses |
+ * goog.reflect.sinkValue. |
+ */ |
+goog.reflect.sinkValue[' '] = goog.nullFunction; |
+ |
+ |
+/** |
+ * Check if a property can be accessed without throwing an exception. |
+ * @param {Object} obj The owner of the property. |
+ * @param {string} prop The property name. |
+ * @return {boolean} Whether the property is accessible. Will also return true |
+ * if obj is null. |
+ */ |
+goog.reflect.canAccessProperty = function(obj, prop) { |
+ /** @preserveTry */ |
+ try { |
+ goog.reflect.sinkValue(obj[prop]); |
+ return true; |
+ } catch (e) {} |
+ return false; |
+}; |