(vals []Value, all, symbols bool)
| 969 | } |
| 970 | |
| 971 | func (p *proxyObject) filterKeys(vals []Value, all, symbols bool) []Value { |
| 972 | if !all { |
| 973 | k := 0 |
| 974 | for i, val := range vals { |
| 975 | var prop Value |
| 976 | if symbols { |
| 977 | if s, ok := val.(*Symbol); ok { |
| 978 | prop = p.getOwnPropSym(s) |
| 979 | } else { |
| 980 | continue |
| 981 | } |
| 982 | } else { |
| 983 | if _, ok := val.(*Symbol); !ok { |
| 984 | prop = p.getOwnPropStr(val.string()) |
| 985 | } else { |
| 986 | continue |
| 987 | } |
| 988 | } |
| 989 | if prop == nil { |
| 990 | continue |
| 991 | } |
| 992 | if prop, ok := prop.(*valueProperty); ok && !prop.enumerable { |
| 993 | continue |
| 994 | } |
| 995 | if k != i { |
| 996 | vals[k] = vals[i] |
| 997 | } |
| 998 | k++ |
| 999 | } |
| 1000 | vals = vals[:k] |
| 1001 | } else { |
| 1002 | k := 0 |
| 1003 | for i, val := range vals { |
| 1004 | if _, ok := val.(*Symbol); ok != symbols { |
| 1005 | continue |
| 1006 | } |
| 1007 | if k != i { |
| 1008 | vals[k] = vals[i] |
| 1009 | } |
| 1010 | k++ |
| 1011 | } |
| 1012 | vals = vals[:k] |
| 1013 | } |
| 1014 | return vals |
| 1015 | } |
| 1016 | |
| 1017 | func (p *proxyObject) stringKeys(all bool, _ []Value) []Value { // we can assume accum is empty |
| 1018 | var keys []Value |
no test coverage detected