Commit 5d44e40b by Ian Lance Taylor

compiler: Handle newlines in general comments.

    
    On comments, the specification says
    (http://golang.org/ref/spec#Comments): General comments start with the
    character sequence /* and continue through the character sequence */.
    A general comment containing one or more newlines acts like a newline,
    otherwise it acts like a space.
    
    Fixes golang/go#11528.
    
    Reviewed-on: https://go-review.googlesource.com/13064

From-SVN: r226794
parent 63ab94b6
3bd90ea170b9c9aecedd37796acdd2712b29922b
3b590ff53700963c1b8207a78594138e6a4e47f4
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
......@@ -600,8 +600,14 @@ Lex::next_token()
{
this->lineoff_ = p + 2 - this->linebuf_;
Location location = this->location();
if (!this->skip_c_comment())
bool found_newline = false;
if (!this->skip_c_comment(&found_newline))
return Token::make_invalid_token(location);
if (found_newline && this->add_semi_at_eol_)
{
this->add_semi_at_eol_ = false;
return this->make_operator(OPERATOR_SEMICOLON, 1);
}
p = this->linebuf_ + this->lineoff_;
pend = this->linebuf_ + this->linesize_;
}
......@@ -1621,7 +1627,7 @@ Lex::one_character_operator(char c)
// Skip a C-style comment.
bool
Lex::skip_c_comment()
Lex::skip_c_comment(bool* found_newline)
{
while (true)
{
......@@ -1642,6 +1648,9 @@ Lex::skip_c_comment()
return true;
}
if (p[0] == '\n')
*found_newline = true;
this->lineoff_ = p - this->linebuf_;
unsigned int c;
bool issued_error;
......
......@@ -469,7 +469,7 @@ class Lex
one_character_operator(char);
bool
skip_c_comment();
skip_c_comment(bool* found_newline);
void
skip_cpp_comment();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment