~ubuntu-branches/debian/sid/scala/sid

« back to all changes in this revision

Viewing changes to src/asm/scala/tools/asm/util/CheckFieldAdapter.java

  • Committer: Package Import Robot
  • Author(s): Emmanuel Bourg, Mehdi Dogguy, Lucas Satabin, Frank S. Thomas, Emmanuel Bourg
  • Date: 2015-06-05 23:52:59 UTC
  • mfrom: (1.2.11)
  • Revision ID: package-import@ubuntu.com-20150605235259-wk00vgk83dh8o19g
Tags: 2.10.5-1
* Team upload.

[ Mehdi Dogguy ]
* New upstream release (Closes: #744278).

[ Lucas Satabin ]
* Update patches
* Update the clean target
* Update paths of elements to install
* Update watch file

[ Frank S. Thomas ]
* Remove myself from Uploaders.

[ Emmanuel Bourg ]
* The package has been adopted by the Java Team (Closes: #754935)
* Patched the build to avoid downloading libraries from the Internet
* Replaced the minified JavaScript files with unobfuscated ones
* No longer build scala-partest.jar until diffutils is packaged or replaced
* debian/watch: Fixed the versions matched (x.y.z instead of x.y.z..z)
* debian/rules:
  - Added the missing get-orig-source target (Closes: #724704)
  - Improved the clean target
* debian/control:
  - Build depend on scala (>= 2.10) and bnd
  - Use canonical URLs for the Vcs-* fields
  - Standards-Version updated to 3.9.6 (no changes)
* Switch to debhelper level 9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***
 
2
 * ASM: a very small and fast Java bytecode manipulation framework
 
3
 * Copyright (c) 2000-2011 INRIA, France Telecom
 
4
 * All rights reserved.
 
5
 *
 
6
 * Redistribution and use in source and binary forms, with or without
 
7
 * modification, are permitted provided that the following conditions
 
8
 * are met:
 
9
 * 1. Redistributions of source code must retain the above copyright
 
10
 *    notice, this list of conditions and the following disclaimer.
 
11
 * 2. Redistributions in binary form must reproduce the above copyright
 
12
 *    notice, this list of conditions and the following disclaimer in the
 
13
 *    documentation and/or other materials provided with the distribution.
 
14
 * 3. Neither the name of the copyright holders nor the names of its
 
15
 *    contributors may be used to endorse or promote products derived from
 
16
 *    this software without specific prior written permission.
 
17
 *
 
18
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 
19
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
20
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
21
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 
22
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 
23
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 
24
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 
25
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 
26
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 
27
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 
28
 * THE POSSIBILITY OF SUCH DAMAGE.
 
29
 */
 
30
package scala.tools.asm.util;
 
31
 
 
32
import scala.tools.asm.AnnotationVisitor;
 
33
import scala.tools.asm.Attribute;
 
34
import scala.tools.asm.FieldVisitor;
 
35
import scala.tools.asm.Opcodes;
 
36
 
 
37
/**
 
38
 * A {@link FieldVisitor} that checks that its methods are properly used.
 
39
 */
 
40
public class CheckFieldAdapter extends FieldVisitor {
 
41
 
 
42
    private boolean end;
 
43
 
 
44
    /**
 
45
     * Constructs a new {@link CheckFieldAdapter}. <i>Subclasses must not use
 
46
     * this constructor</i>. Instead, they must use the
 
47
     * {@link #CheckFieldAdapter(int, FieldVisitor)} version.
 
48
     *
 
49
     * @param fv the field visitor to which this adapter must delegate calls.
 
50
     */
 
51
    public CheckFieldAdapter(final FieldVisitor fv) {
 
52
        this(Opcodes.ASM4, fv);
 
53
    }
 
54
 
 
55
    /**
 
56
     * Constructs a new {@link CheckFieldAdapter}.
 
57
     *
 
58
     * @param api the ASM API version implemented by this visitor. Must be one
 
59
     *        of {@link Opcodes#ASM4}.
 
60
     * @param fv the field visitor to which this adapter must delegate calls.
 
61
     */
 
62
    protected CheckFieldAdapter(final int api, final FieldVisitor fv) {
 
63
        super(api, fv);
 
64
    }
 
65
 
 
66
    @Override
 
67
    public AnnotationVisitor visitAnnotation(
 
68
        final String desc,
 
69
        final boolean visible)
 
70
    {
 
71
        checkEnd();
 
72
        CheckMethodAdapter.checkDesc(desc, false);
 
73
        return new CheckAnnotationAdapter(super.visitAnnotation(desc, visible));
 
74
    }
 
75
 
 
76
    @Override
 
77
    public void visitAttribute(final Attribute attr) {
 
78
        checkEnd();
 
79
        if (attr == null) {
 
80
            throw new IllegalArgumentException("Invalid attribute (must not be null)");
 
81
        }
 
82
        super.visitAttribute(attr);
 
83
    }
 
84
 
 
85
    @Override
 
86
    public void visitEnd() {
 
87
        checkEnd();
 
88
        end = true;
 
89
        super.visitEnd();
 
90
    }
 
91
 
 
92
    private void checkEnd() {
 
93
        if (end) {
 
94
            throw new IllegalStateException("Cannot call a visit method after visitEnd has been called");
 
95
        }
 
96
    }
 
97
}