diff --git a/runtime/src/org/jetbrains/annotations/Mutable.java b/runtime/src/org/jetbrains/annotations/Mutable.java new file mode 100644 index 00000000000..1dc6623a382 --- /dev/null +++ b/runtime/src/org/jetbrains/annotations/Mutable.java @@ -0,0 +1,29 @@ +/* + * Copyright 2010-2013 JetBrains s.r.o. + * + * 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. + */ + +package org.jetbrains.annotations; + +import java.lang.annotation.*; + +/** + * Annotate anything of type descendant from Iterable or Iterator with @Mutable if the corresponding collection/iterator + * is allowed to be mutated + */ +@Documented +@Retention(RetentionPolicy.CLASS) +@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE}) +public @interface Mutable { +} diff --git a/runtime/src/org/jetbrains/annotations/ReadOnly.java b/runtime/src/org/jetbrains/annotations/ReadOnly.java new file mode 100644 index 00000000000..d061b36fdd0 --- /dev/null +++ b/runtime/src/org/jetbrains/annotations/ReadOnly.java @@ -0,0 +1,29 @@ +/* + * Copyright 2010-2013 JetBrains s.r.o. + * + * 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. + */ + +package org.jetbrains.annotations; + +import java.lang.annotation.*; + +/** + * Annotate anything of type descendant from Iterable or Iterator with @ReadOnly if the underlying reference is not intended for mutation. + * Note that such a reference is not guaranteed to be immutable. It may refer to an object mutated elsewhere. + */ +@Documented +@Retention(RetentionPolicy.CLASS) +@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE}) +public @interface ReadOnly { +}