balazske marked 4 inline comments as done.
balazske added inline comments.

================
Comment at: clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp:33-45
+  enum KindTy {
+    Opened, /// Stream is opened.
+    Closed, /// Closed stream (an invalid stream pointer after it was closed).
+    OpenFailed /// The last open operation has failed.
+  } State;
+
+  /// The error state of a stream.
----------------
xazax.hun wrote:
> baloghadamsoftware wrote:
> > xazax.hun wrote:
> > > Szelethus wrote:
> > > > balazske wrote:
> > > > > Szelethus wrote:
> > > > > > Hmm, now that I think of it, could we just merge these 2 enums? 
> > > > > > Also, I fear that indexers would accidentally assign the comment to 
> > > > > > the enum after the comma:
> > > > > > 
> > > > > > ```lang=cpp
> > > > > >     Opened, /// Stream is opened.
> > > > > >     Closed, /// Closed stream (an invalid stream pointer after it 
> > > > > > was closed).
> > > > > >     OpenFailed /// The last open operation has failed.
> > > > > > ```
> > > > > > ` /// Stream is opened` might be assigned to `Closed`. How about 
> > > > > > this:
> > > > > > ```lang=cpp
> > > > > >     /// Stream is opened.
> > > > > >     Opened,
> > > > > >     /// Closed stream (an invalid stream pointer after it was 
> > > > > > closed).
> > > > > >     Closed,
> > > > > >     /// The last open operation has failed.
> > > > > >     OpenFailed
> > > > > > ```
> > > > > Probably these can be merged, it is used for a stream that is in an 
> > > > > indeterminate state after failed `freopen`, but practically it is 
> > > > > handled the same way as a closed stream. But this change would be 
> > > > > done in another revision.
> > > > I meant to merge the two enums (`StreamState` and `ErrorKindTy`) and 
> > > > the fields associated with them (`State` and `ErrorState`). We could 
> > > > however merge `Closed` and `OpenFailed`, granted that we put a 
> > > > `NoteTag` to `evalFreopen`. But I agree, that should be another 
> > > > revision's topic :)
> > > Since you mentioned that ErrorState is only applicable to Open streams, I 
> > > am also +1 on merging the enums. These two states are not orthogonal, no 
> > > reason for them to be separate.
> > Not orthogonal, but rather hiearchical. That is a reason for not merging. I 
> > am completely against it.
> In a more expressive language each enum value could have parameters and we 
> could have
> ```
> Opened(ErrorKind),
> Closed,
> OpenFailed
> ```
> 
> While we do not have such an expressive language, we can simulate this using 
> the current constructs such as a variant. The question is, does this worth 
> the effort? At this point this is more like the matter of taste as long as it 
> is properly documented. 
Have a `bool isOpened` and an error kind is better?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75682/new/

https://reviews.llvm.org/D75682



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to