denoland / deno_ast

Source text parsing, lexing, and AST related functionality for Deno
https://crates.io/crates/deno_ast
MIT License
148 stars 45 forks source link

Example does not compile #102

Closed nevinpuri closed 2 years ago

nevinpuri commented 2 years ago

While trying to run the example:

use deno_ast::parse_module;
use deno_ast::MediaType;
use deno_ast::ParseParams;
use deno_ast::SourceTextInfo;
use std::sync::Arc;

let source_text = Arc::new("class MyClass {}");
let text_info = SourceTextInfo::new(source_text);
let parsed_source = parse_module(ParseParams {
  specifier: "file:///my_file.ts".to_string(),
  media_type: MediaType::TypeScript,
  text_info,
  capture_tokens: true,
  maybe_syntax: None,
  scope_analysis: false,
}).expect("should parse");

// returns the comments
parsed_source.comments();
// returns the tokens if captured
parsed_source.tokens();
// returns the module (AST)
parsed_source.module();
// returns the `SourceTextInfo`
parsed_source.source();

I get an error saying:

error[E0308]: mismatched types
  --> src/parsers/javascript/parser.rs:32:45
   |
32 |         let text_info = SourceTextInfo::new(source_text);
   |                                             ^^^^^^^^^^^ expected `str`, found `&str`
   |

I've tried casting the string, but I can only ever get it to be a &str. Any help is appreciated, I'm not sure what I'm going wrong.

dsherret commented 2 years ago

Sorry, do SourceTextInfo::new("class MyClass {}".into()). See #103.

nevinpuri commented 2 years ago

Thanks, that ended up fixing it.