@@ -527,16 +527,25 @@ impl Parser {
527527 let peeked = self . peek ( ) . clone ( ) ;
528528 if let TokenType :: Identifier ( key) | TokenType :: Value ( Value :: String ( key) ) = peeked. token_type {
529529 self . advance ( ) ;
530- if !self . eat ( & TokenType :: Symbol ( ":" . to_string ( ) ) ) {
531- return Err ( format ! (
532- "Expected ':' after key in object but got {:?} at {}:{}" ,
533- self . peek( ) . token_type, self . peek( ) . line, self . peek( ) . column
534- ) ) ;
535- }
536- let value = self . parse_binary ( 0 ) ?;
537- object. insert ( key. clone ( ) , value) ;
538- if !self . eat ( & TokenType :: Symbol ( "," . to_string ( ) ) ) {
539- break ;
530+ match self . peek ( ) . token_type {
531+ TokenType :: Symbol ( ref s) if s == ":" => {
532+ self . advance ( ) ;
533+ let value = self . parse_binary ( 0 ) ?;
534+ object. insert ( key, value) ;
535+ if !self . eat ( & TokenType :: Symbol ( "," . to_string ( ) ) ) {
536+ break ;
537+ }
538+ }
539+ TokenType :: Symbol ( ref s) if s == "," => {
540+ self . advance ( ) ;
541+ object. insert ( key. clone ( ) , Expression :: Identifier ( key) ) ;
542+ }
543+ _ => {
544+ return Err ( format ! (
545+ "Expected ':' or ',' after key '{}' in object but got {:?} at {}:{}" ,
546+ key, self . peek( ) . token_type, self . peek( ) . line, self . peek( ) . column
547+ ) ) ;
548+ }
540549 }
541550 } else {
542551 return Err ( format ! (
@@ -902,13 +911,7 @@ impl Parser {
902911 if let TokenType :: Value ( Value :: String ( ref path) ) = self . peek ( ) . token_type {
903912 let path = path. clone ( ) ;
904913 self . advance ( ) ;
905- if !self . eat ( & TokenType :: Newline ) {
906- return Err ( format ! (
907- "Expected newline after import path at {}:{}" ,
908- self . peek( ) . line, self . peek( ) . column
909- ) ) ;
910- }
911- Ok ( Statement :: Import { path : path. clone ( ) } )
914+ Ok ( Statement :: Import { path } )
912915 } else {
913916 Err ( format ! (
914917 "Expected string path after 'import' at {}:{}" ,
0 commit comments