use crate::rust_macro_graphql_token_source::RustMacroGraphQLTokenSource;
use libgraphql_core::ast;
use libgraphql_parser::GraphQLParser;
use std::cell::RefCell;
use std::collections::HashMap;
use std::rc::Rc;
use std::str::FromStr;
pub fn parse_with_graphqlschemaparser(
schema: &str,
) -> ast::schema::Document {
let token_stream =
proc_macro2::TokenStream::from_str(schema)
.expect("Should parse as valid TokenStream");
let span_map = Rc::new(RefCell::new(HashMap::new()));
let token_source =
RustMacroGraphQLTokenSource::new(token_stream, span_map);
let parser =
GraphQLParser::from_token_source(token_source);
let result = parser.parse_schema_document();
let (doc, _) = result
.into_valid()
.expect("Parse should succeed with no errors");
let compat =
libgraphql_parser::compat::graphql_parser_v0_4
::to_graphql_parser_schema_ast(
&doc,
&libgraphql_parser::SourceMap::empty(),
);
let (legacy_doc, _) = compat
.into_valid()
.expect("Compat conversion should succeed with no errors");
legacy_doc
}
pub fn parse_with_graphql_parser(
schema: &str,
) -> ast::schema::Document {
ast::schema::parse(schema).expect("Parse should succeed")
}