Fix TokenRange for assoc function self
This commit is contained in:
		
							parent
							
								
									48dd17b320
								
							
						
					
					
						commit
						d9911a8ff5
					
				| @ -343,6 +343,17 @@ pub fn analyze_context(context: &mir::Context, module: &mir::Module, error: Opti | |||||||
|     for (_, function) in &module.associated_functions { |     for (_, function) in &module.associated_functions { | ||||||
|         for param in &function.parameters { |         for param in &function.parameters { | ||||||
|             scope.state.init_types(¶m.meta, Some(param.ty.clone())); |             scope.state.init_types(¶m.meta, Some(param.ty.clone())); | ||||||
|  | 
 | ||||||
|  |             if param.meta.source_module_id == module.module_id { | ||||||
|  |                 dbg!(param); | ||||||
|  |                 let idx = scope | ||||||
|  |                     .token_idx(¶m.meta, |t| matches!(t, Token::Identifier(_))) | ||||||
|  |                     .unwrap_or(function.signature().range.end); | ||||||
|  |                 dbg!(idx, scope.tokens.get(idx)); | ||||||
|  |                 let symbol = scope.state.new_symbol(idx, SemanticKind::Variable); | ||||||
|  |                 scope.state.set_symbol(idx, symbol); | ||||||
|  |                 scope.variables.insert(param.name.clone(), symbol); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         match &function.kind { |         match &function.kind { | ||||||
| @ -366,7 +377,6 @@ pub fn analyze_context(context: &mir::Context, module: &mir::Module, error: Opti | |||||||
| 
 | 
 | ||||||
|         for param in &function.parameters { |         for param in &function.parameters { | ||||||
|             scope.state.init_types(¶m.meta, Some(param.ty.clone())); |             scope.state.init_types(¶m.meta, Some(param.ty.clone())); | ||||||
|             dbg!(param); |  | ||||||
|             if param.meta.source_module_id == module.module_id { |             if param.meta.source_module_id == module.module_id { | ||||||
|                 let idx = scope |                 let idx = scope | ||||||
|                     .token_idx(¶m.meta, |t| matches!(t, Token::Identifier(_))) |                     .token_idx(¶m.meta, |t| matches!(t, Token::Identifier(_))) | ||||||
|  | |||||||
| @ -1168,11 +1168,11 @@ impl Parse for AssociatedFunctionBlock { | |||||||
|             match stream.peek() { |             match stream.peek() { | ||||||
|                 Some(Token::FnKeyword) | Some(Token::PubKeyword) => { |                 Some(Token::FnKeyword) | Some(Token::PubKeyword) => { | ||||||
|                     let mut fun: FunctionDefinition = stream.parse()?; |                     let mut fun: FunctionDefinition = stream.parse()?; | ||||||
|                     fun.0.self_kind = match fun.0.self_kind { |                     match &mut fun.0.self_kind { | ||||||
|                         SelfKind::Owned(_) => SelfKind::Owned(ty.clone()), |                         SelfKind::Owned(inner_ty) => inner_ty.0 = ty.0.clone(), | ||||||
|                         SelfKind::Borrow(_) => SelfKind::Borrow(ty.clone()), |                         SelfKind::Borrow(inner_ty) => inner_ty.0 = ty.0.clone(), | ||||||
|                         SelfKind::MutBorrow(_) => SelfKind::MutBorrow(ty.clone()), |                         SelfKind::MutBorrow(inner_ty) => inner_ty.0 = ty.0.clone(), | ||||||
|                         SelfKind::None => SelfKind::None, |                         SelfKind::None => {} | ||||||
|                     }; |                     }; | ||||||
|                     functions.push(fun); |                     functions.push(fun); | ||||||
|                 } |                 } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user