aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/identifiers/Identifiers.java
blob: f10467404fc08b1480bc8bb324eccb36fd4ebd89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package org.zwobble.couscous.ast.identifiers;

import org.zwobble.couscous.types.ScalarType;

public class Identifiers {
    public static final Identifier TOP = TopIdentifier.INSTANCE;

    public static Identifier type(Identifier identifier, String name) {
        return extend(identifier, name, IdentifierType.TYPE);
    }

    public static Identifier method(Identifier identifier, String name) {
        return extend(identifier, name, IdentifierType.METHOD);
    }

    public static Identifier constructor(Identifier identifier) {
        return extend(identifier, "", IdentifierType.CONSTRUCTOR);
    }

    public static Identifier variable(Identifier identifier, String name) {
        return extend(identifier, name, IdentifierType.VARIABLE);
    }

    private static Identifier extend(Identifier identifier, String name, IdentifierType type) {
        return new ExtendedIdentifier(identifier, name, type);
    }

    public static Identifier forType(String name) {
        return type(TOP, name);
    }

    public static Identifier forType(ScalarType type) {
        return forType(type.getQualifiedName());
    }
}