001/*
002 * ============================================================================
003 *  Copyright © 2002-2026 by Thomas Thrien.
004 *  All Rights Reserved.
005 * ============================================================================
006 *  Licensed to the public under the agreements of the GNU Lesser General Public
007 *  License, version 3.0 (the "License"). You may obtain a copy of the License at
008 *
009 *       http://www.gnu.org/licenses/lgpl.html
010 *
011 *  Unless required by applicable law or agreed to in writing, software
012 *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
013 *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
014 *  License for the specific language governing permissions and limitations
015 *  under the License.
016 */
017
018package org.tquadrat.foundation.annotation;
019
020import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
021import static java.lang.annotation.ElementType.CONSTRUCTOR;
022import static java.lang.annotation.ElementType.FIELD;
023import static java.lang.annotation.ElementType.LOCAL_VARIABLE;
024import static java.lang.annotation.ElementType.METHOD;
025import static java.lang.annotation.ElementType.MODULE;
026import static java.lang.annotation.ElementType.PACKAGE;
027import static java.lang.annotation.ElementType.PARAMETER;
028import static java.lang.annotation.ElementType.RECORD_COMPONENT;
029import static java.lang.annotation.ElementType.TYPE;
030import static java.lang.annotation.ElementType.TYPE_PARAMETER;
031import static java.lang.annotation.ElementType.TYPE_USE;
032import static java.lang.annotation.RetentionPolicy.RUNTIME;
033import static org.apiguardian.api.API.Status.DEPRECATED;
034
035import java.lang.annotation.Documented;
036import java.lang.annotation.Repeatable;
037import java.lang.annotation.Retention;
038import java.lang.annotation.Target;
039
040import org.apiguardian.api.API;
041
042/**
043 *  This annotation allows to add information about applied fixes to a program
044 *  element.
045 *
046 *  @extauthor Thomas Thrien - thomas.thrien@tquadrat.org
047 *  @version $Id: BUG.java 1294 2026-10-17 15:40:42Z tquadrat $
048 *  @since 0.1.0
049 *
050 *  @UMLGraph.link
051 *
052 *  @deprecated Replaced by
053 *      {@link CR}.
054 */
055@SuppressWarnings( "NewClassNamingConvention" )
056@ClassVersion( sourceVersion = "$Id: BUG.java 1294 2026-10-17 15:40:42Z tquadrat $" )
057@API( status = DEPRECATED, since = "0.1.0" )
058@Deprecated( since = "0.25.14", forRemoval = true )
059@Documented
060@Retention( RUNTIME )
061@Target( {ANNOTATION_TYPE, CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, MODULE, PACKAGE, PARAMETER, RECORD_COMPONENT, TYPE, TYPE_PARAMETER, TYPE_USE} )
062@Repeatable( FixList.class )
063public @interface BUG
064{
065        /*------------*\
066    ====** Attributes **=======================================================
067        \*------------*/
068    /**
069     *  An optional comment regarding the bug fix.
070     *
071     *  @return The comment.
072     */
073    String comment() default "";
074
075    /**
076     *  The BUG id as provided by the bug tracking system.
077     *
078     *  @return The BUG id.
079     */
080    @SuppressWarnings( "NewMethodNamingConvention" )
081    String id();
082}
083//  @interface BUG
084
085/*
086 *  End of File
087 */