Skip to content

Commit ed54c3d

Browse files
mheiberfacebook-github-bot
authored andcommitted
repro issue with safe abstract logger
Summary: In our logging for safe abstract, we weren't properly propagating information about the current method. This lead to the stats saying that some accesses `static::c` or `static::m()` were unsafe when they were actually safe Repro the issue, fixed in next diff Reviewed By: vassilmladenov Differential Revision: D71195943 fbshipit-source-id: 627b7ae5ac0a18ffde9e92924f7013ae62192cea
1 parent 52f25a6 commit ed54c3d

6 files changed

+23
-12
lines changed

hphp/hack/test/typecheck/safe_abstract/safe_abstract_logging_summarized/safe_abstract_logging_consts.php

+4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
<?hh
22

3+
// safe_const_accesses":1,"unsafe_const_accesses":0
34
abstract class C1 {
45
abstract const int abs;
56
const int concr = 1;
7+
public function meth(): void {
8+
static::abs;
9+
}
610
}
711

812
final abstract class C2 extends C1 {
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
safe_abstract_logger:{"filename":"safe_abstract_logging_consts.php","safe_news":0,"unsafe_news":0,"safe_calls":0,"unsafe_calls":0,"safe_const_accesses":0,"unsafe_const_accesses":1}
2-
WARN: File "safe_abstract_logging_consts.php", line 14, characters 3-13:
2+
safe_abstract_logger:{"filename":"safe_abstract_logging_consts.php","safe_news":0,"unsafe_news":0,"safe_calls":0,"unsafe_calls":0,"safe_const_accesses":0,"unsafe_const_accesses":1}
3+
WARN: File "safe_abstract_logging_consts.php", line 18, characters 3-13:
34
Unsafe class constant access: C1::abs might not exist because the receiver might be abstract. (Warn[12018])
4-
File "safe_abstract_logging_consts.php", line 13, characters 27-28:
5+
File "safe_abstract_logging_consts.php", line 17, characters 27-28:
56
C1 is from
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
safe_abstract_logger:{"filename":"safe_abstract_logging_consts.php","safe_news":0,"unsafe_news":0,"safe_calls":0,"unsafe_calls":0,"safe_const_accesses":0,"unsafe_const_accesses":1}
2-
WARN: File "safe_abstract_logging_consts.php", line 14, characters 3-13:
2+
safe_abstract_logger:{"filename":"safe_abstract_logging_consts.php","safe_news":0,"unsafe_news":0,"safe_calls":0,"unsafe_calls":0,"safe_const_accesses":0,"unsafe_const_accesses":1}
3+
WARN: File "safe_abstract_logging_consts.php", line 18, characters 3-13:
34
Unsafe class constant access: C1::abs might not exist because the receiver might be abstract. (Warn[12018])
4-
File "safe_abstract_logging_consts.php", line 13, characters 27-28:
5+
File "safe_abstract_logging_consts.php", line 17, characters 27-28:
56
C1 is from

hphp/hack/test/typecheck/safe_abstract/safe_abstract_logging_verbose/safe_abstract_logging_consts.php

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
abstract class C1 {
44
abstract const int abs;
55
const int concr = 1;
6+
public function meth(): void {
7+
static::abs; // use_kind: const_access, is_safe: true
8+
}
69
}
710

811
final abstract class C2 extends C1 {
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
safe_abstract_logger:{"pos":"(Relative_path.Dummy, \"safe_abstract_logging_consts.php\") 13:2","use_kind":"const_access","is_safe":false}
2-
safe_abstract_logger:{"pos":"(Relative_path.Dummy, \"safe_abstract_logging_consts.php\") 14:2","use_kind":"const_access","is_safe":true}
3-
WARN: File "safe_abstract_logging_consts.php", line 13, characters 3-13:
1+
safe_abstract_logger:{"pos":"(Relative_path.Dummy, \"safe_abstract_logging_consts.php\") 16:2","use_kind":"const_access","is_safe":false}
2+
safe_abstract_logger:{"pos":"(Relative_path.Dummy, \"safe_abstract_logging_consts.php\") 17:2","use_kind":"const_access","is_safe":true}
3+
safe_abstract_logger:{"pos":"(Relative_path.Dummy, \"safe_abstract_logging_consts.php\") 7:4","use_kind":"const_access","is_safe":false}
4+
WARN: File "safe_abstract_logging_consts.php", line 16, characters 3-13:
45
Unsafe class constant access: C1::abs might not exist because the receiver might be abstract. (Warn[12018])
5-
File "safe_abstract_logging_consts.php", line 12, characters 24-25:
6+
File "safe_abstract_logging_consts.php", line 15, characters 24-25:
67
C1 is from
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
safe_abstract_logger:{"pos":"(Relative_path.Dummy, \"safe_abstract_logging_consts.php\") 13:2","use_kind":"const_access","is_safe":false}
2-
safe_abstract_logger:{"pos":"(Relative_path.Dummy, \"safe_abstract_logging_consts.php\") 14:2","use_kind":"const_access","is_safe":true}
3-
WARN: File "safe_abstract_logging_consts.php", line 13, characters 3-13:
1+
safe_abstract_logger:{"pos":"(Relative_path.Dummy, \"safe_abstract_logging_consts.php\") 16:2","use_kind":"const_access","is_safe":false}
2+
safe_abstract_logger:{"pos":"(Relative_path.Dummy, \"safe_abstract_logging_consts.php\") 17:2","use_kind":"const_access","is_safe":true}
3+
safe_abstract_logger:{"pos":"(Relative_path.Dummy, \"safe_abstract_logging_consts.php\") 7:4","use_kind":"const_access","is_safe":false}
4+
WARN: File "safe_abstract_logging_consts.php", line 16, characters 3-13:
45
Unsafe class constant access: C1::abs might not exist because the receiver might be abstract. (Warn[12018])
5-
File "safe_abstract_logging_consts.php", line 12, characters 24-25:
6+
File "safe_abstract_logging_consts.php", line 15, characters 24-25:
67
C1 is from

0 commit comments

Comments
 (0)