()
| 302 | } |
| 303 | |
| 304 | func (p *parser) parseObjectAssignmentOp() (opFodder ast.Fodder, plusSugar bool, hide ast.ObjectFieldHide, err errors.StaticError) { |
| 305 | op, err := p.popExpect(tokenOperator) |
| 306 | if err != nil { |
| 307 | return |
| 308 | } |
| 309 | opFodder = op.fodder |
| 310 | opStr := op.data |
| 311 | if opStr[0] == '+' { |
| 312 | plusSugar = true |
| 313 | opStr = opStr[1:] |
| 314 | } |
| 315 | |
| 316 | numColons := 0 |
| 317 | for len(opStr) > 0 { |
| 318 | if opStr[0] != ':' { |
| 319 | err = errors.MakeStaticError( |
| 320 | fmt.Sprintf("Expected one of :, ::, :::, +:, +::, +:::, got: %v", op.data), op.loc) |
| 321 | return |
| 322 | } |
| 323 | opStr = opStr[1:] |
| 324 | numColons++ |
| 325 | } |
| 326 | |
| 327 | switch numColons { |
| 328 | case 1: |
| 329 | hide = ast.ObjectFieldInherit |
| 330 | case 2: |
| 331 | hide = ast.ObjectFieldHidden |
| 332 | case 3: |
| 333 | hide = ast.ObjectFieldVisible |
| 334 | default: |
| 335 | err = errors.MakeStaticError( |
| 336 | fmt.Sprintf("Expected one of :, ::, :::, +:, +::, +:::, got: %v", op.data), op.loc) |
| 337 | return |
| 338 | } |
| 339 | |
| 340 | return |
| 341 | } |
| 342 | |
| 343 | // A literalField is a field of an object or object comprehension. |
| 344 | type literalField string |
no test coverage detected