MCPcopy Create free account
hub / github.com/SerenityOS/jakt / parse_using

Method parse_using

bootstrap/stage0/parser.cpp:2001–3532  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1999}
2000
2001Jakt::parser::ParsedAlias Jakt::parser::Parser::parse_using() {
2002{
2003Jakt::parser::ParsedAlias alias = Jakt::parser::ParsedAlias(JaktInternal::OptionalNone(),DynamicArray<Jakt::parser::ParsedNameWithGenericParameters>::create_with({}));
2004for (;;){
2005{auto&& __jakt_match_variant = this->current();
2006switch(__jakt_match_variant.__jakt_init_index()) {
2007case 55 /* Eol */:case 61 /* As */:case 56 /* Eof */:{
2008break;
2009}
2010goto __jakt_label_17;case 6 /* ColonColon */:{
2011this->index++;
2012continue;
2013}
2014goto __jakt_label_17;case 3 /* Identifier */: {
2015auto&& __jakt_match_value = __jakt_match_variant.as.Identifier;ByteString const& name = __jakt_match_value.name;
2016Jakt::utility::Span const& span = __jakt_match_value.span;
2017{
2018Jakt::parser::ParsedNameWithGenericParameters parsed_name = Jakt::parser::ParsedNameWithGenericParameters(name,span,DynamicArray<NonnullRefPtr<typename Jakt::parser::ParsedType>>::create_with({}));
2019this->index++;
2020if (this->current().__jakt_init_index() == 28 /* LessThan */){
2021this->index++;
2022while (!this->eof()){
2023{auto&& __jakt_match_variant = this->current();
2024switch(__jakt_match_variant.__jakt_init_index()) {
2025case 26 /* GreaterThan */:{
2026this->index++;
2027break;
2028}
2029goto __jakt_label_18;case 52 /* Comma */:case 55 /* Eol */:{
2030this->index++;
2031}
2032goto __jakt_label_18;case 33 /* RightShift */:{
2033this->inject_token(Jakt::lexer::Token::GreaterThan(this->current().span()));
2034this->index += static_cast<size_t>(1ULL);
2035break;
2036}
2037goto __jakt_label_18;default:{
2038size_t const index_before = this->index;
2039NonnullRefPtr<typename Jakt::parser::ParsedType> const inner_type = this->parse_typename();
2040if (index_before == this->index){
2041this->error(ByteString::from_utf8_without_validation("Expected type name"sv),this->current().span());
2042break;
2043}
2044parsed_name.generic_parameters.push(inner_type);
2045}
2046goto __jakt_label_18;}/*switch end*/
2047break;}goto __jakt_label_18; __jakt_label_18:;;
2048}
2049}
2050alias.target.push(parsed_name);
2051}
2052goto __jakt_label_17;};/*case end*/
2053case 0 /* SingleQuotedString */: {
2054auto&& __jakt_match_value = __jakt_match_variant.as.SingleQuotedString;Jakt::utility::Span const& span = __jakt_match_value.span;
2055{
2056this->error(ByteString::from_utf8_without_validation("Expected alias target name"sv),span);
2057break;
2058}

Callers 1

parse_namespaceMethod · 0.95

Calls 13

currentMethod · 0.95
eofMethod · 0.95
inject_tokenMethod · 0.95
parse_typenameMethod · 0.95
errorMethod · 0.95
previousMethod · 0.95
ParsedAliasClass · 0.85
OptionalNoneClass · 0.85
ParsedNameClass · 0.85
__jakt_init_indexMethod · 0.45
spanMethod · 0.45

Tested by

no test coverage detected