Project

General

Profile

Bug #11679 ยป 0001-Do-not-allow-partial-name-in-magic-comments.patch

h.shirosaki (Hiroshi Shirosaki), 11/12/2015 08:23 AM

View differences:

parse.y
if (s[i] == '-') s[i] = '_';
}
do {
if (STRNCASECMP(p->name, s, n) == 0) {
if (n == (long)strlen(p->name) && STRNCASECMP(p->name, s, n) == 0) {
n = vend - vbeg;
if (p->length) {
n = (*p->length)(parser, vbeg, n);
test/ruby/test_literal.rb
assert_equal "foo\n", `echo #{s}`
end
def test_string_encoding_with_magic_comments
all_assertions do |a|
a.for("utf-8 string with indicator") do
str = eval("# -*- coding: utf-8 -*-\n""'foo'")
assert_equal(Encoding::UTF_8, str.encoding)
end
a.for("utf-8 string without indicator") do
str = eval("# coding: utf-8\n""'foo'")
assert_equal(Encoding::UTF_8, str.encoding)
end
a.for("us_ascii string with no magic comments") do
str = eval("'foo'")
assert_equal(Encoding::US_ASCII, str.encoding)
end
a.for("us_ascii string with invalid magic comments") do
str = eval("# c: utf-8\n""'foo'")
assert_equal(Encoding::US_ASCII, str.encoding)
end
a.for("us_ascii string with invalid magic comments and indicator") do
str = eval("# -*- c: utf-8 -*- \n""'foo'")
assert_equal(Encoding::US_ASCII, str.encoding)
end
end
end
def test_frozen_string
all_assertions do |a|
a.for("false with indicator") do
......
str = eval("# frozen-string-literal: false x\n""'foo'")
assert_not_predicate(str, :frozen?)
end
a.for("true with succeeding garbage") do
str = eval("# frozen-string-literal: true x\n""'foo'")
a.for("false with invalid name") do
str = eval("# frozen: true\n""'foo'")
assert_not_predicate(str, :frozen?)
end
end
    (1-1/1)