Skip to content

Commit

Permalink
fmt: remove redundant parenthesis in the complex infix expr (#17873)
Browse files Browse the repository at this point in the history
  • Loading branch information
yuyi98 committed Apr 4, 2023
1 parent 8452644 commit 467a1b4
Show file tree
Hide file tree
Showing 44 changed files with 141 additions and 117 deletions.
2 changes: 1 addition & 1 deletion cmd/tools/vdoc/html.v
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ fn (vd VDoc) write_content(cn &doc.DocNode, d &doc.Doc, mut hw strings.Builder)
os.file_name(cn.file_path)
}
src_link := get_src_link(vd.manifest.repo_url, file_path_name, cn.pos.line_nr + 1)
if cn.content.len != 0 || (cn.name == 'Constants') {
if cn.content.len != 0 || cn.name == 'Constants' {
hw.write_string(doc_node_html(cn, src_link, false, cfg.include_examples, d.table))
}
for child in cn.children {
Expand Down
2 changes: 1 addition & 1 deletion cmd/tools/vtest-parser.v
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ fn (mut context Context) print_status() {
if context.is_silent {
return
}
if (context.cut_index == 1) && (context.max_index == 0) {
if context.cut_index == 1 && context.max_index == 0 {
return
}
msg := '> ${context.path:-30} | index: ${context.cut_index:5}/${context.max_index - 1:5}'
Expand Down
2 changes: 1 addition & 1 deletion examples/game_of_life/life.v
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ fn (mut g Game) evolve() {
temp_grid << []string{}
for y in 0 .. g.grid[x].len {
count := g.get_surrounding_alive_count(x, y)
if count == 3 || ((g.grid[x][y] == cell) && count == 2) {
if count == 3 || (g.grid[x][y] == cell && count == 2) {
temp_grid[x] << cell
} else {
temp_grid[x] << nothing
Expand Down
4 changes: 2 additions & 2 deletions examples/graphs/bellman-ford.v
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ fn bellman_ford[T](graph [][]T, src int) {
mut u := edges[j].src
mut v := edges[j].dest
mut weight := edges[j].weight
if (dist[u] != large) && (dist[u] + weight < dist[v]) {
if dist[u] != large && dist[u] + weight < dist[v] {
dist[v] = dist[u] + weight
}
}
Expand All @@ -88,7 +88,7 @@ fn bellman_ford[T](graph [][]T, src int) {
mut u := edges[j].src
mut v := edges[j].dest
mut weight := edges[j].weight
if (dist[u] != large) && (dist[u] + weight < dist[v]) {
if dist[u] != large && dist[u] + weight < dist[v] {
print('\n Graph contains negative weight cycle')
// If negative cycle is detected, simply
// return or an exit(1)
Expand Down
2 changes: 1 addition & 1 deletion examples/graphs/bfs2.v
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ fn build_path_reverse(graph map[string][]string, start string, final string, vis

for (current != start) {
for i in array_of_nodes {
if (current in graph[i]) && (visited[i] == true) {
if current in graph[i] && visited[i] == true {
current = i
break // the first ocurrence is enough
}
Expand Down
2 changes: 1 addition & 1 deletion examples/graphs/dfs.v
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ fn build_path_reverse(graph map[string][]string, start string, final string, vis

for current != start {
for i in array_of_nodes {
if (current in graph[i]) && (visited[i] == true) {
if current in graph[i] && visited[i] == true {
current = i
break // the first ocurrence is enough
}
Expand Down
2 changes: 1 addition & 1 deletion examples/graphs/dijkstra.v
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ fn push_pq[T](mut prior_queue []T, data int, priority int) {
lenght_pq := prior_queue.len

mut i := 0
for (i < lenght_pq) && (priority > prior_queue[i].priority) {
for i < lenght_pq && priority > prior_queue[i].priority {
temp << prior_queue[i]
i++
}
Expand Down
2 changes: 1 addition & 1 deletion examples/graphs/minimal_spann_tree_prim.v
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ fn push_pq[T](mut prior_queue []T, data int, priority int) {
lenght_pq := prior_queue.len

mut i := 0
for (i < lenght_pq) && (priority > prior_queue[i].priority) {
for i < lenght_pq && priority > prior_queue[i].priority {
temp << prior_queue[i]
i++
}
Expand Down
2 changes: 1 addition & 1 deletion vlib/builtin/js/string_test.js.v
Original file line number Diff line number Diff line change
Expand Up @@ -831,7 +831,7 @@ fn test_split_into_lines() {

assert lines_mixed_trailers.len == 9
for line in lines_mixed_trailers {
assert (line == line_content) || (line == '')
assert line == line_content || line == ''
}
}

Expand Down
4 changes: 2 additions & 2 deletions vlib/builtin/string.v
Original file line number Diff line number Diff line change
Expand Up @@ -1019,7 +1019,7 @@ pub fn (s string) split_into_lines() []string {
line_start = i + 1
} else if s[i] == cr {
res << if line_start == i { '' } else { s[line_start..i] }
if ((i + 1) < s.len) && (s[i + 1] == lf) {
if (i + 1) < s.len && s[i + 1] == lf {
line_start = i + 2
} else {
line_start = i + 1
Expand Down Expand Up @@ -1796,7 +1796,7 @@ fn (s string) at_with_check(idx int) ?u8 {
pub fn (c u8) is_space() bool {
// 0x85 is NEXT LINE (NEL)
// 0xa0 is NO-BREAK SPACE
return c == 32 || (c > 8 && c < 14) || (c == 0x85) || (c == 0xa0)
return c == 32 || (c > 8 && c < 14) || c == 0x85 || c == 0xa0
}

// is_digit returns `true` if the byte is in range 0-9 and `false` otherwise.
Expand Down
2 changes: 1 addition & 1 deletion vlib/builtin/string_test.v
Original file line number Diff line number Diff line change
Expand Up @@ -1054,7 +1054,7 @@ fn test_split_into_lines() {

assert lines_mixed_trailers.len == 9
for line in lines_mixed_trailers {
assert (line == line_content) || (line == '')
assert line == line_content || line == ''
}
}

Expand Down
2 changes: 1 addition & 1 deletion vlib/datatypes/quadtree.v
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ pub fn (mut q Quadtree) insert(p AABB) {

q.particles << p

if (q.particles.len > q.capacity) && (q.level < q.depth) {
if q.particles.len > q.capacity && q.level < q.depth {
if q.nodes.len == 0 {
q.split()
}
Expand Down
2 changes: 1 addition & 1 deletion vlib/encoding/csv/writer.v
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ fn (w &Writer) field_needs_quotes(field string) bool {
if field == '' {
return false
}
if field.contains(w.delimiter.ascii_str()) || (field.index_any('"\r\n') != -1) {
if field.contains(w.delimiter.ascii_str()) || field.index_any('"\r\n') != -1 {
return true
}
return false
Expand Down
90 changes: 44 additions & 46 deletions vlib/encoding/utf8/utf8_util.v
Original file line number Diff line number Diff line change
Expand Up @@ -212,42 +212,41 @@ Private functions
// Raw to_lower utf-8 function
fn utf8_to_lower(in_cp int) int {
mut cp := in_cp
if ((0x0041 <= cp) && (0x005a >= cp)) || ((0x00c0 <= cp) && (0x00d6 >= cp))
|| ((0x00d8 <= cp) && (0x00de >= cp)) || ((0x0391 <= cp) && (0x03a1 >= cp))
|| ((0x03a3 <= cp) && (0x03ab >= cp)) || ((0x0410 <= cp) && (0x042f >= cp)) {
if (0x0041 <= cp && 0x005a >= cp) || (0x00c0 <= cp && 0x00d6 >= cp)
|| (0x00d8 <= cp && 0x00de >= cp) || (0x0391 <= cp && 0x03a1 >= cp)
|| (0x03a3 <= cp && 0x03ab >= cp) || (0x0410 <= cp && 0x042f >= cp) {
cp += 32
} else if (0x0400 <= cp) && (0x040f >= cp) {
} else if 0x0400 <= cp && 0x040f >= cp {
cp += 80
} else if ((0x0100 <= cp) && (0x012f >= cp)) || ((0x0132 <= cp) && (0x0137 >= cp))
|| ((0x014a <= cp) && (0x0177 >= cp)) || ((0x0182 <= cp) && (0x0185 >= cp))
|| ((0x01a0 <= cp) && (0x01a5 >= cp)) || ((0x01de <= cp) && (0x01ef >= cp))
|| ((0x01f8 <= cp) && (0x021f >= cp)) || ((0x0222 <= cp) && (0x0233 >= cp))
|| ((0x0246 <= cp) && (0x024f >= cp)) || ((0x03d8 <= cp) && (0x03ef >= cp))
|| ((0x0460 <= cp) && (0x0481 >= cp)) || ((0x048a <= cp) && (0x04ff >= cp)) {
} else if (0x0100 <= cp && 0x012f >= cp) || (0x0132 <= cp && 0x0137 >= cp)
|| (0x014a <= cp && 0x0177 >= cp) || (0x0182 <= cp && 0x0185 >= cp)
|| (0x01a0 <= cp && 0x01a5 >= cp) || (0x01de <= cp && 0x01ef >= cp)
|| (0x01f8 <= cp && 0x021f >= cp) || (0x0222 <= cp && 0x0233 >= cp)
|| (0x0246 <= cp && 0x024f >= cp) || (0x03d8 <= cp && 0x03ef >= cp)
|| (0x0460 <= cp && 0x0481 >= cp) || (0x048a <= cp && 0x04ff >= cp) {
cp |= 0x1
} else if ((0x0139 <= cp) && (0x0148 >= cp)) || ((0x0179 <= cp) && (0x017e >= cp))
|| ((0x01af <= cp) && (0x01b0 >= cp)) || ((0x01b3 <= cp) && (0x01b6 >= cp))
|| ((0x01cd <= cp) && (0x01dc >= cp)) {
} else if (0x0139 <= cp && 0x0148 >= cp) || (0x0179 <= cp && 0x017e >= cp)
|| (0x01af <= cp && 0x01b0 >= cp) || (0x01b3 <= cp && 0x01b6 >= cp)
|| (0x01cd <= cp && 0x01dc >= cp) {
cp += 1
cp &= ~0x1
} else if ((0x0531 <= cp) && (0x0556 >= cp)) || ((0x10A0 <= cp) && (0x10C5 >= cp)) {
} else if (0x0531 <= cp && 0x0556 >= cp) || (0x10A0 <= cp && 0x10C5 >= cp) {
// ARMENIAN or GEORGIAN
cp += 0x30
} else if (((0x1E00 <= cp) && (0x1E94 >= cp)) || ((0x1EA0 <= cp) && (0x1EF8 >= cp)))
&& (cp & 1 == 0) {
} else if ((0x1E00 <= cp && 0x1E94 >= cp) || (0x1EA0 <= cp && 0x1EF8 >= cp)) && cp & 1 == 0 {
// LATIN CAPITAL LETTER
cp += 1
} else if (0x24B6 <= cp) && (0x24CF >= cp) {
} else if 0x24B6 <= cp && 0x24CF >= cp {
// CIRCLED LATIN
cp += 0x1a
} else if (0xFF21 <= cp) && (0xFF3A >= cp) {
} else if 0xFF21 <= cp && 0xFF3A >= cp {
// FULLWIDTH LATIN CAPITAL
cp += 0x19
} else if ((0x1F08 <= cp) && (0x1F0F >= cp)) || ((0x1F18 <= cp) && (0x1F1D >= cp))
|| ((0x1F28 <= cp) && (0x1F2F >= cp)) || ((0x1F38 <= cp) && (0x1F3F >= cp))
|| ((0x1F48 <= cp) && (0x1F4D >= cp)) || ((0x1F68 <= cp) && (0x1F6F >= cp))
|| ((0x1F88 <= cp) && (0x1F8F >= cp)) || ((0x1F98 <= cp) && (0x1F9F >= cp))
|| ((0x1FA8 <= cp) && (0x1FAF >= cp)) {
} else if (0x1F08 <= cp && 0x1F0F >= cp) || (0x1F18 <= cp && 0x1F1D >= cp)
|| (0x1F28 <= cp && 0x1F2F >= cp) || (0x1F38 <= cp && 0x1F3F >= cp)
|| (0x1F48 <= cp && 0x1F4D >= cp) || (0x1F68 <= cp && 0x1F6F >= cp)
|| (0x1F88 <= cp && 0x1F8F >= cp) || (0x1F98 <= cp && 0x1F9F >= cp)
|| (0x1FA8 <= cp && 0x1FAF >= cp) {
// GREEK
cp -= 8
} else {
Expand Down Expand Up @@ -315,42 +314,41 @@ fn utf8_to_lower(in_cp int) int {
// Raw to_upper utf-8 function
fn utf8_to_upper(in_cp int) int {
mut cp := in_cp
if ((0x0061 <= cp) && (0x007a >= cp)) || ((0x00e0 <= cp) && (0x00f6 >= cp))
|| ((0x00f8 <= cp) && (0x00fe >= cp)) || ((0x03b1 <= cp) && (0x03c1 >= cp))
|| ((0x03c3 <= cp) && (0x03cb >= cp)) || ((0x0430 <= cp) && (0x044f >= cp)) {
if (0x0061 <= cp && 0x007a >= cp) || (0x00e0 <= cp && 0x00f6 >= cp)
|| (0x00f8 <= cp && 0x00fe >= cp) || (0x03b1 <= cp && 0x03c1 >= cp)
|| (0x03c3 <= cp && 0x03cb >= cp) || (0x0430 <= cp && 0x044f >= cp) {
cp -= 32
} else if (0x0450 <= cp) && (0x045f >= cp) {
} else if 0x0450 <= cp && 0x045f >= cp {
cp -= 80
} else if ((0x0100 <= cp) && (0x012f >= cp)) || ((0x0132 <= cp) && (0x0137 >= cp))
|| ((0x014a <= cp) && (0x0177 >= cp)) || ((0x0182 <= cp) && (0x0185 >= cp))
|| ((0x01a0 <= cp) && (0x01a5 >= cp)) || ((0x01de <= cp) && (0x01ef >= cp))
|| ((0x01f8 <= cp) && (0x021f >= cp)) || ((0x0222 <= cp) && (0x0233 >= cp))
|| ((0x0246 <= cp) && (0x024f >= cp)) || ((0x03d8 <= cp) && (0x03ef >= cp))
|| ((0x0460 <= cp) && (0x0481 >= cp)) || ((0x048a <= cp) && (0x04ff >= cp)) {
} else if (0x0100 <= cp && 0x012f >= cp) || (0x0132 <= cp && 0x0137 >= cp)
|| (0x014a <= cp && 0x0177 >= cp) || (0x0182 <= cp && 0x0185 >= cp)
|| (0x01a0 <= cp && 0x01a5 >= cp) || (0x01de <= cp && 0x01ef >= cp)
|| (0x01f8 <= cp && 0x021f >= cp) || (0x0222 <= cp && 0x0233 >= cp)
|| (0x0246 <= cp && 0x024f >= cp) || (0x03d8 <= cp && 0x03ef >= cp)
|| (0x0460 <= cp && 0x0481 >= cp) || (0x048a <= cp && 0x04ff >= cp) {
cp &= ~0x1
} else if ((0x0139 <= cp) && (0x0148 >= cp)) || ((0x0179 <= cp) && (0x017e >= cp))
|| ((0x01af <= cp) && (0x01b0 >= cp)) || ((0x01b3 <= cp) && (0x01b6 >= cp))
|| ((0x01cd <= cp) && (0x01dc >= cp)) {
} else if (0x0139 <= cp && 0x0148 >= cp) || (0x0179 <= cp && 0x017e >= cp)
|| (0x01af <= cp && 0x01b0 >= cp) || (0x01b3 <= cp && 0x01b6 >= cp)
|| (0x01cd <= cp && 0x01dc >= cp) {
cp -= 1
cp |= 0x1
} else if ((0x0561 <= cp) && (0x0586 >= cp)) || ((0x10D0 <= cp) && (0x10F5 >= cp)) {
} else if (0x0561 <= cp && 0x0586 >= cp) || (0x10D0 <= cp && 0x10F5 >= cp) {
// ARMENIAN or GEORGIAN
cp -= 0x30
} else if (((0x1E01 <= cp) && (0x1E95 >= cp)) || ((0x1EA1 <= cp) && (0x1EF9 >= cp)))
&& (cp & 1 == 1) {
} else if ((0x1E01 <= cp && 0x1E95 >= cp) || (0x1EA1 <= cp && 0x1EF9 >= cp)) && cp & 1 == 1 {
// LATIN CAPITAL LETTER
cp -= 1
} else if (0x24D0 <= cp) && (0x24E9 >= cp) {
} else if 0x24D0 <= cp && 0x24E9 >= cp {
// CIRCLED LATIN
cp -= 0x1a
} else if (0xFF41 <= cp) && (0xFF5A >= cp) {
} else if 0xFF41 <= cp && 0xFF5A >= cp {
// FULLWIDTH LATIN CAPITAL
cp -= 0x19
} else if ((0x1F00 <= cp) && (0x1F07 >= cp)) || ((0x1F10 <= cp) && (0x1F15 >= cp))
|| ((0x1F20 <= cp) && (0x1F27 >= cp)) || ((0x1F30 <= cp) && (0x1F37 >= cp))
|| ((0x1F40 <= cp) && (0x1F45 >= cp)) || ((0x1F60 <= cp) && (0x1F67 >= cp))
|| ((0x1F80 <= cp) && (0x1F87 >= cp)) || ((0x1F90 <= cp) && (0x1F97 >= cp))
|| ((0x1FA0 <= cp) && (0x1FA7 >= cp)) {
} else if (0x1F00 <= cp && 0x1F07 >= cp) || (0x1F10 <= cp && 0x1F15 >= cp)
|| (0x1F20 <= cp && 0x1F27 >= cp) || (0x1F30 <= cp && 0x1F37 >= cp)
|| (0x1F40 <= cp && 0x1F45 >= cp) || (0x1F60 <= cp && 0x1F67 >= cp)
|| (0x1F80 <= cp && 0x1F87 >= cp) || (0x1F90 <= cp && 0x1F97 >= cp)
|| (0x1FA0 <= cp && 0x1FA7 >= cp) {
// GREEK
cp += 8
} else {
Expand Down
2 changes: 1 addition & 1 deletion vlib/flag/flag.v
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ fn (mut fs FlagParser) parse_bool_value(longhand string, shorthand u8) !string {
continue
}
if (arg.len == 2 && arg[0] == `-` && arg[1] == shorthand) || arg == full {
if fs.args.len > i + 1 && (fs.args[i + 1] in ['true', 'false']) {
if fs.args.len > i + 1 && fs.args[i + 1] in ['true', 'false'] {
val := fs.args[i + 1]
fs.args.delete(i + 1)
fs.args.delete(i)
Expand Down
4 changes: 2 additions & 2 deletions vlib/math/bits/bits.v
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ pub fn div_64(hi u64, lo u64, y1 u64) (u64, u64) {
un0 := un10 & bits.mask32
mut q1 := un32 / yn1
mut rhat := un32 - (q1 * yn1)
for (q1 >= bits.two32) || (q1 * yn0) > ((bits.two32 * rhat) + un1) {
for q1 >= bits.two32 || (q1 * yn0) > ((bits.two32 * rhat) + un1) {
q1--
rhat += yn1
if rhat >= bits.two32 {
Expand All @@ -466,7 +466,7 @@ pub fn div_64(hi u64, lo u64, y1 u64) (u64, u64) {
un21 := (un32 * bits.two32) + (un1 - (q1 * y))
mut q0 := un21 / yn1
rhat = un21 - q0 * yn1
for (q0 >= bits.two32) || (q0 * yn0) > ((bits.two32 * rhat) + un0) {
for q0 >= bits.two32 || (q0 * yn0) > ((bits.two32 * rhat) + un0) {
q0--
rhat += yn1
if rhat >= bits.two32 {
Expand Down
2 changes: 1 addition & 1 deletion vlib/math/complex/complex.v
Original file line number Diff line number Diff line change
Expand Up @@ -370,5 +370,5 @@ pub fn (c Complex) acsch() Complex {

// Complex Equals
pub fn (c1 Complex) equals(c2 Complex) bool {
return (c1.re == c2.re) && (c1.im == c2.im)
return c1.re == c2.re && c1.im == c2.im
}
2 changes: 1 addition & 1 deletion vlib/math/invtrig.v
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ pub fn asin(x_ f64) f64 {
// acos(x) = nan if x < -1 or x > 1
[inline]
pub fn acos(x f64) f64 {
if (x < -1.0) || (x > 1.0) {
if x < -1.0 || x > 1.0 {
return nan()
}
if x > 0.5 {
Expand Down
2 changes: 1 addition & 1 deletion vlib/regex/regex.v
Original file line number Diff line number Diff line change
Expand Up @@ -1982,7 +1982,7 @@ pub fn (mut re RE) match_base(in_txt &u8, in_txt_len int) (int, int) {
// check if stop
else if m_state == .stop {
// we are in search mode, don't exit until the end
if ((re.flag & regex.f_src) != 0) && (ist != regex.ist_prog_end) {
if (re.flag & regex.f_src) != 0 && ist != regex.ist_prog_end {
last_fnd_pc = state.pc
state.pc = -1
state.i += char_len
Expand Down
2 changes: 1 addition & 1 deletion vlib/regex/regex_test.v
Original file line number Diff line number Diff line change
Expand Up @@ -691,7 +691,7 @@ fn test_regex_func() {
mut re, re_err, err_pos := regex.regex_base(query)
if re_err == regex.compile_ok {
start, end := re.match_string(test_str)
assert (start == 0) && (end == 6)
assert start == 0 && end == 6
} else {
eprintln('Error in query string in pos ${err_pos}')
eprintln('Error: ${re.get_parse_error_string(re_err)}')
Expand Down
4 changes: 2 additions & 2 deletions vlib/strconv/atof.c.v
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ fn parser(s string) (ParserState, PrepNumber) {
}

// read mantissa decimals
if (i < s.len) && (s[i] == `.`) {
if i < s.len && s[i] == `.` {
i++
for i < s.len && s[i].is_digit() {
if digx < strconv.digits {
Expand All @@ -177,7 +177,7 @@ fn parser(s string) (ParserState, PrepNumber) {
}

// read exponent
if (i < s.len) && ((s[i] == `e`) || (s[i] == `E`)) {
if i < s.len && (s[i] == `e` || s[i] == `E`) {
i++
if i < s.len {
// esponent sign
Expand Down
6 changes: 3 additions & 3 deletions vlib/strconv/atoi.v
Original file line number Diff line number Diff line change
Expand Up @@ -233,16 +233,16 @@ fn underscore_ok(s string) bool {
}
// Optional base prefix.
mut hex := false
if (s.len - i >= 2) && (s[i] == `0`) && (((s[i + 1] | 32) == `b`)
|| ((s[i + 1] | 32) == `o`) || ((s[i + 1] | 32) == `x`)) {
if s.len - i >= 2 && s[i] == `0` && ((s[i + 1] | 32) == `b`
|| (s[i + 1] | 32) == `o` || (s[i + 1] | 32) == `x`) {
saw = `0` // base prefix counts as a digit for "underscore as digit separator"
hex = (s[i + 1] | 32) == `x`
i += 2
}
// Number proper.
for ; i < s.len; i++ {
// Digits are always okay.
if (`0` <= s[i] && s[i] <= `9`) || ((hex && `a` <= (s[i] | 32)) && ((s[i] | 32) <= `f`)) {
if (`0` <= s[i] && s[i] <= `9`) || ((hex && `a` <= (s[i] | 32)) && (s[i] | 32) <= `f`) {
saw = `0`
continue
}
Expand Down

0 comments on commit 467a1b4

Please sign in to comment.