• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Camelcade / Perl5-IDEA / #525521660

24 Aug 2025 01:28PM UTC coverage: 75.89% (-6.3%) from 82.227%
#525521660

push

github

hurricup
Migrated coverage reporting to https://github.com/nbaztec/coveralls-jacoco-gradle-plugin

See: https://github.com/kt3k/coveralls-gradle-plugin/issues/119

14751 of 22639 branches covered (65.16%)

Branch coverage included in aggregate %.

31091 of 37767 relevant lines covered (82.32%)

0.82 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

94.74
/plugin/common/src/main/java/com/perl5/lang/perl/parser/elementTypes/PerlElementTypeFactory.java
1
/*
2
 * Copyright 2015-2025 Alexandr Evstigneev
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 * http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16

17
package com.perl5.lang.perl.parser.elementTypes;
18

19
import com.intellij.openapi.diagnostic.Logger;
20
import com.intellij.psi.tree.IElementType;
21
import com.perl5.lang.perl.psi.stubs.PerlStubElementTypes;
22
import com.perl5.lang.perl.psi.stubs.calls.PerlSubCallElementType;
23
import org.jetbrains.annotations.NotNull;
24

25
import static com.perl5.lang.perl.util.PerlPackageUtilCore.__PACKAGE__;
26

27

28
public class PerlElementTypeFactory {
×
29
  private static final Logger LOG = Logger.getInstance(PerlElementTypeFactory.class);
1✔
30

31
  public static @NotNull IElementType getTokenType(@NotNull String name) {
32
    return switch (name) {
1✔
33
      case "COMMENT_BLOCK" -> new PerlBlockCommentTokenType(name);
1✔
34
      case "ATTRIBUTE_IDENTIFIER" -> new PerlAttributeIdentifierTokenType(name);
1✔
35
      case "regex" -> new PerlRegexTokenType(name);
1✔
36
      case "STRING_CONTENT", "STRING_CONTENT_QQ", "STRING_CONTENT_XQ" -> new PerlStringContentTokenType(name);
1✔
37
      case "SCALAR_NAME", "ARRAY_NAME", "HASH_NAME", "GLOB_NAME" -> new PerlVariableNameTokenType(name);
1✔
38
      case "POD" -> new PerlPodReparseableTokenType(name);
1✔
39
      case "subname", "list", "unary", "unary_custom", "argumentless" -> new PerlSubNameTokenType(name);
1✔
40
      case "package::name", "package::name::", __PACKAGE__ -> new PerlNamespaceNameTokenType(name);
1✔
41
      case "COMMENT_LINE" -> new PerlReparseableCommentTokenType(name);
1✔
42
      default -> new PerlTokenType(name);
1✔
43
    };
44
  }
45

46
  public static @NotNull IElementType getElementType(@NotNull String name) {
47
    return switch (name) {
1!
48
      case "PARSABLE_STRING_USE_VARS" -> new PerlUseVarsStringElementType();
1✔
49
      case "COMMENT_ANNOTATION" -> new PerlAnnotationElementType(name);
1✔
50
      case "HEREDOC_QQ", "HEREDOC_QX", "HEREDOC" -> new PerlHeredocElementType(name);
1✔
51
      case "SUB_DEFINITION" -> PerlStubElementTypes.SUB_DEFINITION;
1✔
52
      case "METHOD_DEFINITION" -> PerlStubElementTypes.METHOD_DEFINITION;
1✔
53
      case "FUNC_DEFINITION" -> PerlStubElementTypes.FUNC_DEFINITION;
1✔
54
      case "SUB_DECLARATION" -> PerlStubElementTypes.SUB_DECLARATION;
1✔
55
      case "GLOB_VARIABLE" -> PerlStubElementTypes.PERL_GLOB;
1✔
56
      case "NAMESPACE_DEFINITION" -> PerlStubElementTypes.PERL_NAMESPACE;
1✔
57
      case "VARIABLE_DECLARATION_ELEMENT" -> PerlStubElementTypes.PERL_VARIABLE_DECLARATION_ELEMENT;
1✔
58
      case "DO_EXPR" -> PerlStubElementTypes.PERL_DO_EXPR;
1✔
59
      case "ADD_EXPR", "AFTER_MODIFIER", "AND_EXPR", "ANNOTATION_ABSTRACT", "ANNOTATION_DEPRECATED", "ANNOTATION_INJECT",
60
           "ANNOTATION_METHOD", "ANNOTATION_NOINSPECTION", "ANNOTATION_NO_INJECT", "ANNOTATION_OVERRIDE", "ANNOTATION_RETURNS",
61
           "ANNOTATION_TYPE", "ANNOTATION_VARIABLE", "AROUND_MODIFIER", "AROUND_SIGNATURE_INVOCANTS", "ARRAYREF_TYPE", "ARRAY_ELEMENT",
62
           "ARRAY_INDEX_VARIABLE", "ARRAY_POP_EXPR", "ARRAY_PUSH_EXPR", "ARRAY_SHIFT_EXPR", "ARRAY_SLICE", "ARRAY_UNSHIFT_EXPR",
63
           "ARRAY_VARIABLE", "ASSIGN_EXPR", "ATTRIBUTE", "ATTRIBUTES", "AUGMENT_MODIFIER", "BEFORE_MODIFIER", "BITWISE_AND_EXPR",
64
           "BITWISE_OR_XOR_EXPR", "BLESS_EXPR", "BLOCK_ARRAY", "BLOCK_BRACELESS", "BLOCK_CODE", "BLOCK_COMPOUND", "BLOCK_GLOB",
65
           "BLOCK_HASH", "BLOCK_SCALAR", "CALL_ARGUMENTS", "CASE_COMPOUND", "CASE_CONDITION", "CASE_DEFAULT", "CATCH_CONDITION",
66
           "CATCH_EXPR", "CODE_VARIABLE", "COMMA_SEQUENCE_EXPR", "COMPARE_EXPR", "COMPOSITE_ATOM_EXPR", "CONDITIONAL_BLOCK",
67
           "CONTINUATION_EXPR", "CONTINUE_BLOCK", "CONTINUE_EXPR", "CUSTOM_ATOM_EXPR", "DEFAULT_COMPOUND", "DEFINED_EXPR", "DELETE_EXPR",
68
           "DEREF_EXPR", "DO_BLOCK_EXPR", "EACH_EXPR", "EQUAL_EXPR", "ESC_CHAR", "EVAL_EXPR", "EXCEPT_EXPR", "EXIT_EXPR", "EXPR",
69
           "FILE_GLOB_EXPR", "FILE_READ_EXPR", "FINALLY_EXPR", "FLIPFLOP_EXPR", "FOREACH_COMPOUND", "FOREACH_ITERATOR", "FORMAT_DEFINITION",
70
           "FOR_COMPOUND", "FOR_CONDITION", "FOR_INIT", "FOR_MUTATOR", "FOR_OR_FOREACH", "FOR_STATEMENT_MODIFIER", "FUN_EXPR",
71
           "GIVEN_COMPOUND", "GLOB_SLOT", "GOTO_EXPR", "GREP_EXPR", "HASHREF_TYPE", "HASH_ARRAY_SLICE", "HASH_ELEMENT", "HASH_HASH_SLICE",
72
           "HASH_SLICE", "HASH_VARIABLE", "HEREDOC_OPENER", "HEX_CHAR", "IF_COMPOUND", "IF_STATEMENT_MODIFIER", "ISA_EXPR", "KEYS_EXPR",
73
           "LABEL_DECLARATION", "LABEL_EXPR", "LAST_EXPR", "LP_AND_EXPR", "LP_NOT_EXPR", "LP_OR_XOR_EXPR", "MAP_EXPR", "METHOD",
74
           "METHOD_EXPR", "METHOD_SIGNATURE_INVOCANT", "MUL_EXPR", "NAMED_BLOCK", "NAMESPACE_CONTENT", "NEXT_EXPR", "NUMBER_CONSTANT",
75
           "NYI_STATEMENT", "OCT_CHAR", "OR_EXPR", "OTHERWISE_EXPR", "PACKAGE_EXPR", "PERL_HANDLE_EXPR", "PERL_REGEX",
76
           "PERL_REGEX_MODIFIERS", "POST_DEREF_ARRAY_SLICE_EXPR", "POST_DEREF_EXPR", "POST_DEREF_GLOB_EXPR", "POST_DEREF_HASH_SLICE_EXPR",
77
           "POW_EXPR", "PREFIX_UNARY_EXPR", "PREF_PP_EXPR", "PRINT_EXPR", "REDO_EXPR", "REF_EXPR", "REGEX_EXPR", "REGEX_REPLACEMENT",
78
           "RETURN_EXPR", "SCALAR_CALL", "SCALAR_EXPR", "SCALAR_VARIABLE", "SHIFT_EXPR", "SIGNATURE_CONTENT", "SIGNATURE_ELEMENT",
79
           "SORT_EXPR", "SPLICE_EXPR", "STATEMENT", "STATEMENT_MODIFIER", "STRING_BARE", "SUB_EXPR", "SUB_SIGNATURE_ELEMENT_IGNORE",
80
           "SUFF_PP_EXPR", "SWITCH_COMPOUND", "SWITCH_CONDITION", "TAG_SCALAR", "TERNARY_EXPR", "TRYCATCH_COMPOUND", "TRYCATCH_EXPR",
81
           "TRY_EXPR", "TR_MODIFIERS", "TR_REPLACEMENTLIST", "TR_SEARCHLIST", "TYPE_CONSTRAINTS", "TYPE_SPECIFIER", "UNCONDITIONAL_BLOCK",
82
           "UNDEF_EXPR", "UNICODE_CHAR", "UNLESS_COMPOUND", "UNLESS_STATEMENT_MODIFIER", "UNTIL_COMPOUND", "UNTIL_STATEMENT_MODIFIER",
83
           "VALUES_EXPR", "VARIABLE_DECLARATION_GLOBAL", "VARIABLE_DECLARATION_LEXICAL", "VARIABLE_DECLARATION_LOCAL",
84
           "VARIABLE_DECLARATION_WRAPPER", "WANTARRAY_EXPR", "WHEN_COMPOUND", "WHEN_STATEMENT_MODIFIER", "WHILE_COMPOUND",
85
           "WHILE_STATEMENT_MODIFIER" -> new PerlElementType(name);
1✔
86
      case "REQUIRE_EXPR" -> PerlStubElementTypes.PERL_REQUIRE_EXPR;
1✔
87
      case "ANON_ARRAY", "ARRAY_INDEX" -> new PerlAnonArrayElementType(name);
1✔
88
      case "ANON_HASH" -> new PerlAnonHashElementType();
1✔
89
      case "ARRAY_CAST_EXPR" -> new PerlDereferenceElementType.Array(name);
1✔
90
      case "BLOCK" -> new PerlCodeBlockElementType();
1✔
91
      case "CODE_CAST_EXPR" -> new PerlDereferenceElementType.Code(name);
1✔
92
      case "COMPILE_REGEX" -> new PerlCompileRegexpElementType(name);
1✔
93
      case "CONDITION_EXPR", "PARENTHESISED_EXPR" -> new PerlParenthesizedElementType(name);
1✔
94
      case "GLOB_CAST_EXPR" -> new PerlDereferenceElementType.Glob(name);
1✔
95
      case "HASH_CAST_EXPR" -> new PerlDereferenceElementType.Hash(name);
1✔
96
      case "HASH_INDEX" -> new PerlHashIndexElementType(name);
1✔
97
      case "MATCH_REGEX" -> new PerlMatchRegexpElementType(name);
1✔
98
      case "REPLACEMENT_REGEX", "TR_REGEX" -> new PerlRegexReplacementElementType(name);
1✔
99
      case "SCALAR_CAST_EXPR" -> new PerlDereferenceElementType.Scalar(name);
1✔
100
      case "SCALAR_INDEX_CAST_EXPR" -> new PerlDereferenceElementType.ScalarIndex(name);
1✔
101
      case "STRING_DQ" -> new PerlQQStringElementType(name);
1✔
102
      case "STRING_LIST" -> new PerlStringListElementType(name);
1✔
103
      case "STRING_SQ" -> new PerlQStringElementType(name);
1✔
104
      case "STRING_XQ" -> new PerlQXStringElementType(name);
1✔
105
      case "SUB_CALL" -> new PerlSubCallElementType(name);
1✔
106
      case "PARENTHESISED_CALL_ARGUMENTS" -> new PerlParenthesizedCallArgumentsElementType(name);
1✔
107
      default -> {
108
        LOG.error("Unknown token:" + name);
×
109
        throw new RuntimeException("Unknown token:" + name);
×
110
      }
111
    };
112
  }
113
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc