mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	merge
This commit is contained in:
		| @@ -198,6 +198,8 @@ class LambdaExpression(Expression): | ||||
|         self.return_type = safe_exp(return_type) if return_type is not None else None | ||||
|  | ||||
|     def __str__(self): | ||||
|         # Stateless lambdas (empty capture) implicitly convert to function pointers | ||||
|         # when assigned to function pointer types - no unary + needed | ||||
|         cpp = f"[{self.capture}]({self.parameters})" | ||||
|         if self.return_type is not None: | ||||
|             cpp += f" -> {self.return_type}" | ||||
| @@ -700,6 +702,12 @@ async def process_lambda( | ||||
|             parts[i * 3 + 1] = var | ||||
|         parts[i * 3 + 2] = "" | ||||
|  | ||||
|     # All id() references are global variables in generated C++ code. | ||||
|     # Global variables should not be captured - they're accessible everywhere. | ||||
|     # Use empty capture instead of capture-by-value. | ||||
|     if capture == "=": | ||||
|         capture = "" | ||||
|  | ||||
|     if isinstance(value, ESPHomeDataBase) and value.esp_range is not None: | ||||
|         location = value.esp_range.start_mark | ||||
|         location.line += value.content_offset | ||||
|   | ||||
		Reference in New Issue
	
	Block a user