JavaParser Source Viewer

Home|JavaParser/com/github/javaparser/ast/type/UnknownType.java
1/*
2 * Copyright (C) 2007-2010 JĂșlio Vilmar Gesser.
3 * Copyright (C) 2011, 2013-2020 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 */
21package com.github.javaparser.ast.type;
22
23import com.github.javaparser.ast.AllFieldsConstructor;
24import com.github.javaparser.ast.NodeList;
25import com.github.javaparser.ast.expr.AnnotationExpr;
26import com.github.javaparser.ast.visitor.GenericVisitor;
27import com.github.javaparser.ast.visitor.VoidVisitor;
28import com.github.javaparser.ast.Node;
29import com.github.javaparser.ast.visitor.CloneVisitor;
30import com.github.javaparser.metamodel.UnknownTypeMetaModel;
31import com.github.javaparser.metamodel.JavaParserMetaModel;
32import com.github.javaparser.TokenRange;
33import com.github.javaparser.resolution.types.ResolvedReferenceType;
34import com.github.javaparser.resolution.types.ResolvedType;
35import java.util.function.Consumer;
36import java.util.Optional;
37import com.github.javaparser.ast.Generated;
38
39/**
40 * An unknown parameter type object. It plays the role of a null object for
41 * lambda parameters that have no explicit type declared. As such, it has no
42 * lexical representation and hence gets no comment attributed.
43 * <p>
44 * <br>In {@code DoubleToIntFunction d = }<b>{@code x}</b> {@code -> (int)x + 1;} the x parameter in bold has type UnknownType.
45 *
46 * @author Didier Villevalois
47 */
48public class UnknownType extends Type {
49
50    @AllFieldsConstructor
51    public UnknownType() {
52        this(null);
53    }
54
55    /**
56     * This constructor is used by the parser and is considered private.
57     */
58    @Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator")
59    public UnknownType(TokenRange tokenRange) {
60        super(tokenRange);
61        customInitialization();
62    }
63
64    @Override
65    @Generated("com.github.javaparser.generator.core.node.AcceptGenerator")
66    public <RAR accept(final GenericVisitor<RAvfinal A arg) {
67        return v.visit(this, arg);
68    }
69
70    @Override
71    @Generated("com.github.javaparser.generator.core.node.AcceptGenerator")
72    public <Avoid accept(final VoidVisitor<Avfinal A arg) {
73        v.visit(this, arg);
74    }
75
76    @Override
77    public UnknownType setAnnotations(NodeList<AnnotationExprannotations) {
78        if (annotations.size() > 0) {
79            throw new IllegalStateException("Inferred lambda types cannot be annotated.");
80        }
81        return (UnknownType) super.setAnnotations(annotations);
82    }
83
84    @Override
85    @Generated("com.github.javaparser.generator.core.node.RemoveMethodGenerator")
86    public boolean remove(Node node) {
87        if (node == null)
88            return false;
89        return super.remove(node);
90    }
91
92    @Override
93    public String asString() {
94        return "";
95    }
96
97    @Override
98    @Generated("com.github.javaparser.generator.core.node.CloneGenerator")
99    public UnknownType clone() {
100        return (UnknownTypeaccept(new CloneVisitor(), null);
101    }
102
103    @Override
104    @Generated("com.github.javaparser.generator.core.node.GetMetaModelGenerator")
105    public UnknownTypeMetaModel getMetaModel() {
106        return JavaParserMetaModel.unknownTypeMetaModel;
107    }
108
109    @Override
110    @Generated("com.github.javaparser.generator.core.node.ReplaceMethodGenerator")
111    public boolean replace(Node nodeNode replacementNode) {
112        if (node == null)
113            return false;
114        return super.replace(nodereplacementNode);
115    }
116
117    @Override
118    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
119    public boolean isUnknownType() {
120        return true;
121    }
122
123    @Override
124    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
125    public UnknownType asUnknownType() {
126        return this;
127    }
128
129    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
130    public void ifUnknownType(Consumer<UnknownTypeaction) {
131        action.accept(this);
132    }
133
134    @Override
135    public ResolvedType resolve() {
136        return getSymbolResolver().toResolvedType(this, ResolvedReferenceType.class);
137    }
138
139    @Override
140    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
141    public Optional<UnknownTypetoUnknownType() {
142        return Optional.of(this);
143    }
144}
145
MembersX
UnknownType:ifUnknownType
UnknownType:asUnknownType
UnknownType:resolve
UnknownType:UnknownType
UnknownType:getMetaModel
UnknownType:accept
UnknownType:setAnnotations
UnknownType:remove
UnknownType:replace
UnknownType:clone
UnknownType:isUnknownType
UnknownType:asString
UnknownType:toUnknownType
Members
X