reflect: track flags when size changes from fits-in-pointer to not
Fixes #3328
Этот коммит содержится в:
		
							родитель
							
								
									5293d3e5f0
								
							
						
					
					
						коммит
						86f125cf72
					
				
					 3 изменённых файлов: 16 добавлений и 1 удалений
				
			
		|  | @ -507,7 +507,7 @@ func (v Value) Field(i int) Value { | |||
| 		ptr := unsafe.Pointer(uintptr(v.value) + structField.Offset) | ||||
| 		value := unsafe.Pointer(loadValue(ptr, fieldSize)) | ||||
| 		return Value{ | ||||
| 			flags:    0, | ||||
| 			flags:    flags &^ valueFlagIndirect, | ||||
| 			typecode: fieldType, | ||||
| 			value:    value, | ||||
| 		} | ||||
|  |  | |||
							
								
								
									
										1
									
								
								testdata/reflect.go
									
										
									
									
										предоставленный
									
									
								
							
							
						
						
									
										1
									
								
								testdata/reflect.go
									
										
									
									
										предоставленный
									
									
								
							|  | @ -129,6 +129,7 @@ func main() { | |||
| 		&linkedList{ | ||||
| 			foo: 42, | ||||
| 		}, | ||||
| 		struct{ A, B uintptr }{2, 3}, | ||||
| 		// interfaces | ||||
| 		[]interface{}{3, "str", -4 + 2.5i}, | ||||
| 	} { | ||||
|  |  | |||
							
								
								
									
										14
									
								
								testdata/reflect.txt
									
										
									
									
										предоставленный
									
									
								
							
							
						
						
									
										14
									
								
								testdata/reflect.txt
									
										
									
									
										предоставленный
									
									
								
							|  | @ -334,6 +334,20 @@ reflect type: ptr | |||
|     exported: false | ||||
|     reflect type: int addrable=true caninterface=false | ||||
|       int: 42 | ||||
| reflect type: struct | ||||
|   struct: 2 | ||||
|   field: 0 A | ||||
|   tag:  | ||||
|   embedded: false | ||||
|   exported: true | ||||
|   reflect type: uintptr | ||||
|     uint: 2 | ||||
|   field: 1 B | ||||
|   tag:  | ||||
|   embedded: false | ||||
|   exported: true | ||||
|   reflect type: uintptr | ||||
|     uint: 3 | ||||
| reflect type: slice comparable=false | ||||
|   slice: interface 3 3 | ||||
|   pointer: true | ||||
|  |  | |||
		Загрузка…
	
	Создание таблицы
		
		Сослаться в новой задаче
	
	 Damian Gryski
						Damian Gryski