Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Side by Side Diff: quiver/lib/check.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « quiver/lib/cache.dart ('k') | quiver/lib/collection.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 Google Inc. All Rights Reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 /// A simple set of pre/post-condition checkers based on the
16 /// [Guava](https://code.google.com/p/guava-libraries/) Preconditions
17 /// class in Java.
18 ///
19 /// These checks are stronger than 'assert' statements, which can be
20 /// switched off, so they must only be used in situations where we actively
21 /// want the program to break when the check fails.
22 ///
23 /// ## Performance
24 /// Performance may be an issue with these checks if complex logic is computed
25 /// in order to make the method call. You should be careful with its use in
26 /// these cases - this library is aimed at improving maintainability and
27 /// readability rather than performance. They are also useful when the program
28 /// should fail early - for example, null-checking a parameter that might not
29 /// be used until the end of the method call.
30 ///
31 /// ## Error messages
32 /// The message parameter can be either a `() => Object` or any other `Object`.
33 /// The object will be converted to an error message by calling its
34 /// `toString()`. The `Function` should be preferred if the message is complex
35 /// to construct (i.e., it uses `String` interpolation), because it is only
36 /// called when the check fails.
37 ///
38 /// If the message parameter is `null` or returns `null`, a default error
39 /// message will be used.
40 library quiver.check;
41
42 /// Throws an [ArgumentError] if the given [expression] is `false`.
43 void checkArgument(bool expression, {message}) {
44 if (!expression) {
45 throw new ArgumentError(_resolveMessage(message, null));
46 }
47 }
48
49 /// Throws a [RangeError] if the given [index] is not a valid index for a list
50 /// with [size] elements. Otherwise, returns the [index] parameter.
51 int checkListIndex(int index, int size, {message}) {
52 if (index < 0 || index >= size) {
53 throw new RangeError(_resolveMessage(
54 message, 'index $index not valid for list of size $size'));
55 }
56 return index;
57 }
58
59 /// Throws an [ArgumentError] if the given [reference] is `null`. Otherwise,
60 /// returns the [reference] parameter.
61 dynamic checkNotNull(reference, {message}) {
62 if (reference == null) {
63 throw new ArgumentError(_resolveMessage(message, 'null pointer'));
64 }
65 return reference;
66 }
67
68 /// Throws a [StateError] if the given [expression] is `false`.
69 void checkState(bool expression, {message}) {
70 if (!expression) {
71 throw new StateError(_resolveMessage(message, 'failed precondition'));
72 }
73 }
74
75 String _resolveMessage(message, String defaultMessage) {
76 if (message is Function) message = message();
77 if (message == null) return defaultMessage;
78 return message.toString();
79 }
OLDNEW
« no previous file with comments | « quiver/lib/cache.dart ('k') | quiver/lib/collection.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698