1/*
2 * Copyright (C) 2007-2010 Júlio Vilmar Gesser.
3 * Copyright (C) 2011, 2013-2016 The JavaParser Team.
4 *
5 * This file is part of JavaParser.
6 *
7 * JavaParser can be used either under the terms of
8 * a) the GNU Lesser General Public License as published by
9 *     the Free Software Foundation, either version 3 of the License, or
10 *     (at your option) any later version.
11 * b) the terms of the Apache License
12 *
13 * You should have received a copy of both licenses in LICENCE.LGPL and
14 * LICENCE.APACHE. Please refer to those files for details.
15 *
16 * JavaParser is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 * GNU Lesser General Public License for more details.
20 */
21
22package com.github.javaparser.ast.type;
23
24import com.github.javaparser.ast.expr.AnnotationExpr;
25import com.github.javaparser.ast.visitor.GenericVisitor;
26import com.github.javaparser.ast.visitor.VoidVisitor;
27
28import java.util.List;
29
30/**
31 * An unknown parameter type object. It plays the role of a null object for
32 * lambda parameters that have no explicit type declared. As such, it has no
33 * lexical representation and hence gets no comment attributed.
34 *
35 * @author Didier Villevalois
36 */
37public final class UnknownType extends Type<UnknownType> {
38
39    public UnknownType() {
40    }
41
42    @Override
43    public <R, A> R accept(final GenericVisitor<R, A> v, final A arg) {
44        return v.visit(this, arg);
45    }
46
47    @Override
48    public <A> void accept(final VoidVisitor<A> v, final A arg) {
49        v.visit(this, arg);
50    }
51
52    @Override
53    public List<AnnotationExpr> getAnnotations() {
54        throw new IllegalStateException("Inferred lambda types cannot be annotated.");
55    }
56
57    @Override
58    public UnknownType setAnnotations(List<AnnotationExpr> annotations) {
59        throw new IllegalStateException("Inferred lambda types cannot be annotated.");
60    }
61
62}
63